On 23/11/16 12:33, monik...@netzero.net wrote: > So numbermap.__getitem__ brings back 1, then 2,then 3, then 4. > Then it looks up 1 ,2, 3, 4 in month but there is no key with value 1, 2, or > or in 4. > What am I missing?
Your problem is not with getitem but with sorted. You need to read up on how sorted uses the key parameter. It basiocally iterates over the collection to be sorted applying the key function to each item in the collection in turn. It then sorts the collection based on the results. You can think of it as turning a collection of values like [v1,v2,v3] into a collection of pairs where the second item of each pair is the result of applying the key function to the value, like this: [(v1,key(v1)),(v2,key(v2)),(v3,key(v3))] And then sorting based on the second value of the pair. Finally it returns the first value of the sorted collection. Lets take an example where we define a key function called mag() for magnitude: def mag(n): return n if n>=0 else -n numbers = [1,-5,2,-4] Now if we apply sorted(numbers,mag) sorted iterates over numbers calling mag(n) for each number to get: [(1,1),(-5,5),(2,2),(-4,4)] And then sorts that list based on the second value of each pair: [(1,1),(2,2),(-4,4),(-5,5)] And finally returns the first values of that sorted list: [1,2,-4,-5] Now your situation with a dictionary is slightly more complex because of the added mapping between keys and values. But for a dict it works the same except that the key function is passed the dictionary key each time, but the basic idea is identical. Does that help? -- Alan G Author of the Learn to Program web site http://www.alan-g.me.uk/ http://www.amazon.com/author/alan_gauld Follow my photo-blog on Flickr at: http://www.flickr.com/photos/alangauldphotos _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor