我试图通过键排序字典,但没有机会。 这是我的字典:Python:如何按键排序字典
result={'1':'value1','2':'value2',...}
我使用Python2.7,我发现这个
keys = result.keys()
keys.sort()
但这不是我所期待的,我有一个未排序的字典。
我试图通过键排序字典,但没有机会。 这是我的字典:Python:如何按键排序字典
result={'1':'value1','2':'value2',...}
我使用Python2.7,我发现这个
keys = result.keys()
keys.sort()
但这不是我所期待的,我有一个未排序的字典。
标准Python字典本质上是无序的。但是,您可以使用collections.OrderedDict
。它保留插入顺序,因此,所有你需要做的就是添加键/值对所需的顺序:
In [4]: collections.OrderedDict(sorted(result.items()))
Out[4]: OrderedDict([('1', 'value1'), ('2', 'value2')])
Python字典是无序的(的定义)
您可以使用OrderedDict代替
sorted(result.iteritems(), key=lambda key_value: key_value[0])
这将输出排序结果,但字典将保持未排序。如果你想保持字典的顺序,使用OrderedDict
其实,如果你排序键你可以跳过key=...
部分,因为那时的迭代项目是按值(什么NPE的使用首先由键后整理在他的回答中)
我会亲自去'键=拉姆达(KEY,VAL):VAL)'这也是正确的,但恕我直言也更明确 – 2013-03-25 11:48:29
@JonClements在python 3已弃用,所以目前的做法更好 – jamylak 2013-03-25 11:50:09
@jamylak:为什么不推荐?任何参考? – 2013-03-25 11:51:19
如果if我有1000对夫妇(关键,价值)?? – Imoum 2013-03-25 12:56:06
如果我必须按照“value *”的顺序对OrderedDict([('1','value1'),('2','value2')])'进行排序, – 2016-07-08 10:24:43