TypeError: ‘dict_keys’ object does not support indexing

Clearly you’re passing in d.keys() to your shuffle function. Probably this was written with python2.x (when d.keys() returned a list). With python3.x, d.keys() returns a dict_keys object which behaves a lot more like a set than a list. As such, it can’t be indexed. The solution is to pass list(d.keys()) (or simply list(d)) to shuffle.

How to detect key presses?

I am making a stopwatch type program in Python and I would like to know how to detect if a key is pressed (such as p for pause and s for stop), and I would not like it to be something like raw_input, which waits for the user’s input before continuing execution. Anyone know how … Read more

Difference between len() and .__len__()?

len is a function to get the length of a collection. It works by calling an object’s __len__ method. __something__ attributes are special and usually more than meets the eye, and generally should not be called directly. It was decided at some point long ago getting the length of something should be a function and not a method code, reasoning … Read more

Mapping over values in a python dictionary

There is no such function; the easiest way to do this is to use a dict comprehension: In python 2.7, use the .iteritems() method instead of .items() to save memory. The dict comprehension syntax wasn’t introduced until python 2.7. Note that there is no such method on lists either; you’d have to use a list comprehension or the map() function. As … Read more