我该如何按键对字典进行排序?

18 浏览
0 Comments

我该如何按键对字典进行排序?

如何通过键对字典进行排序?

示例输入:

{2:3, 1:89, 4:5, 3:0}

期望输出:

{1:89, 2:3, 3:0, 4:5}

admin 更改状态以发布 2023年5月21日
0
0 Comments

对于CPython/PyPy 3.6以及任何Python 3.7或更高版本,这很容易完成:

>>> d = {2:3, 1:89, 4:5, 3:0}
>>> dict(sorted(d.items()))
{1: 89, 2: 3, 3: 0, 4: 5}

0
0 Comments

注意: 对于Python 3.7以上版本,请参见这个答案

标准的Python字典是无序的(在Python 3.7之前)。即使你对(key,value)进行排序,你也不能将它们以一种保持顺序的方式存储到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

对于Python 3用户,需要使用.items()而不是.iteritems()

In [13]: for k, v in od.items(): print(k, v)
   ....: 
1 89
2 3
3 0
4 5

0