小编典典

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

all

什么是从{2:3, 1:89, 4:5, 3:0}到的好方法{1:89, 2:3, 3:0, 4:5}
我检查了一些帖子,但它们都使用返回元组的“排序”运算符。


阅读 131

收藏
2022-02-25

共1个答案

小编典典

标准 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

蟒蛇 3

对于 Python 3 用户,需要使用以下.items()代替.iteritems()

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