如何在Python中对字典进行排序
这是我的问题。我得到这个如何在Python中对字典进行排序
{'Ciaran Johnson': {'PB': 58.2,
'Gender': 'M',
'Age': 6,
'Event': 'IM',
'Name': 'Ciaran Johnson'},
'Joan Pine': {'PB': 44.0,
'Gender': 'F',
'Age': 6,
'Event': 'FS',
'Name': 'Joan Pine'},
'Eric Idle': {'PB': 57.2,
'Gender': 'M',
'Age': 6,
'Event': 'IM',
'Name': 'Eric Idle'},
'Kirsty Laing': {'PB': 58.2,
'Gender': 'F',
'Age': 6,
'Event': 'IM',
'Name': 'Kirsty Laing'}}
,我必须对它进行排序按性别firsty,那么事件和lastle时间(PB -the最快的是第一)
您不能对Python中的词典,它们是天生无序。
虽然你可以sort the keys(),它创建一个列表,然后使用该列表以虚假有序的方式访问元素。
非常感谢您的帮助! – Adriano 2012-04-11 13:06:55
试试这个
>>> for k,v in sorted(spam.items(),key=lambda k:(k[1]['Gender'],k[1]['Age'],k[1]['PB'])):
print(k,v)
Joan Pine {'PB': 44.0, 'Gender': 'F', 'Age': 6, 'Event': 'FS', 'Name': 'Joan Pine'}
Kirsty Laing {'PB': 58.2, 'Gender': 'F', 'Age': 6, 'Event': 'IM', 'Name': 'Kirsty Laing'}
Eric Idle {'PB': 57.2, 'Gender': 'M', 'Age': 6, 'Event': 'IM', 'Name': 'Eric Idle'}
Ciaran Johnson {'PB': 58.2, 'Gender': 'M', 'Age': 6, 'Event': 'IM', 'Name': 'Ciaran Johnson'}
>>>
非常感谢您的帮助! – Adriano 2012-04-11 13:07:05
我有这个[
dict
]我必须对它进行排序...
不能排序dict
,因为标准字典是无序的。但是,您可以使用OrderedDict
:
In [2]: from collections import OrderedDict
In [3]: sd = OrderedDict(sorted(d.items(), key=lambda (k,v): (v['Gender'], v['Event'], v['PB'])))
In [4]: sd
Out[4]: OrderedDict([('Joan Pine', {'PB': 44.0, 'Gender': 'F', 'Age': 6, 'Event': 'FS', 'Name': 'Joan Pine'}), ('Kirsty Laing', {'PB': 58.2, 'Gender': 'F', 'Age': 6, 'Event': 'IM', 'Name': 'Kirsty Laing'}), ('Eric Idle', {'PB': 57.2, 'Gender': 'M', 'Age': 6, 'Event': 'IM', 'Name': 'Eric Idle'}), ('Ciaran Johnson', {'PB': 58.2, 'Gender': 'M', 'Age': 6, 'Event': 'IM', 'Name': 'Ciaran Johnson'})])
非常感谢您的帮助! – Adriano 2012-04-11 13:06:47
...您试过了什么?你知道字典不能用python排序吗? – Simon 2012-04-11 11:46:34