Consider this dictionary format.
{'KEY1':{'name':'google','date':20100701,'downloads':0},
'KEY2':{'name':'chrome','date':20071010,'downloads':0},
'KEY3':{'name':'python','date':20100710,'downloads':100}}
I'd like the dictionary sorted by downloads first, and then all items with no downloads sorted by date. Obviously a dictionary cannot be sorted, I just need a sorted listed of keys I can iterate over.
['KEY3','KEY1','KEY2']
I can already sort the list by either value using sorted
, but how do I sort by second value too?
Use the key
argument for sorted()
. It lets you specify a function that, given the actual item being sorted, returns a value that should be sorted by. If this value is a tuple, then it sorts like tuples sort - by the first value, and then by the second value.
sorted(your_list, key=lambda x: (your_dict[x]['downloads'], your_dict[x]['date']))