Sort the values of a dict

MRAB python at mrabarnett.plus.com
Fri Dec 18 19:19:15 EST 2009


Rory Campbell-Lange wrote:
> On 18/12/09, mattia (gervaz at gmail.com) wrote:
>> Hi all, I have a dictionary that uses dates and a tuples ad key, value 
>> pairs. I need to sort the values of the dict and insert everything in a 
>> tuple. The additional problem is that I need to sort the values looking 
>> at the i-th element of the list. I'm not that good at python (v3.1), but 
>> this is my solution:
>>
>>>>> d = {1:('a', 1, 12), 5:('r', 21, 10), 2:('u', 9, 8)}
>>>>> t = [x for x in d.values()]
>>>>> def third(mls):
>> ...     return mls[2]
>> ...
>>>>> s = sorted(t, key=third)
>>>>> pres = []
>>>>> for x in s:
>> ...     for k in d.keys():
>> ...         if d[k] == x:
>> ...             pres.append(k)
>> ...             break
>> ...
>>>>> res = []
>>>>> for x in pres:
>> ...     res.append((x, d[x]))
>> ...
>>>>> res
>> [(2, ('u', 9, 8)), (5, ('r', 21, 10)), (1, ('a', 1, 12))]
> 
> How about 
> 
>>>> mylist = [z for z in zip(list(d), list(d.values()))]
> 
The Pythonic way for the above line is:

 >>> mylist = list(d.items())

> and then sort on your sort criteria, either i[0], i[0][1], i[0][2] or
> i[0][3].
> 
> Rory
> 
> 
> 




More information about the Python-list mailing list