如何按键对字典进行排序?
2022-09-05 00:58:48
如何按键对字典进行排序?
示例输入:
{2:3, 1:89, 4:5, 3:0}
所需输出:
{1:89, 2:3, 3:0, 4:5}
如何按键对字典进行排序?
示例输入:
{2:3, 1:89, 4:5, 3:0}
所需输出:
{1:89, 2:3, 3:0, 4:5}
注意:对于 Python 3.7+,请参阅此答案
标准的Python字典是无序的(直到Python 3.7)。即使您对(键,值)对进行排序,也无法以保留顺序的方式存储它们。dict
最简单的方法是使用 OrderedDict
,它记住元素的插入顺序:
In [1]: import collections
In [2]: d = {2:3, 1:89, 4:5, 3:0}
In [3]: od = collections.OrderedDict(sorted(d.items()))
In [4]: od
Out[4]: OrderedDict([(1, 89), (2, 3), (3, 0), (4, 5)])
不要介意打印出来的方式;它将按预期工作:od
In [11]: od[1]
Out[11]: 89
In [12]: od[3]
Out[12]: 0
In [13]: for k, v in od.iteritems(): print k, v
....:
1 89
2 3
3 0
4 5
对于Python 3用户,需要使用代替:.items()
.iteritems()
In [13]: for k, v in od.items(): print(k, v)
....:
1 89
2 3
3 0
4 5
字典本身没有这样的有序项目,如果你想把它们等打印成某种顺序,这里有一些例子:
在 Python 2.4 及更高版本中:
mydict = {'carl':40,
'alan':2,
'bob':1,
'danny':3}
for key in sorted(mydict):
print "%s: %s" % (key, mydict[key])
给:
alan: 2
bob: 1
carl: 40
danny: 3
(Python 低于 2.4:)
keylist = mydict.keys()
keylist.sort()
for key in keylist:
print "%s: %s" % (key, mydict[key])
资料来源:http://www.saltycrane.com/blog/2007/09/how-to-sort-python-dictionary-by-keys/