Python 3根据dict的值对其排序

2024-05-10 21:21:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我找到的唯一方法是python2或只返回元组列表。

是否可以按字典的值对字典进行排序,例如{"aa": 3, "bb": 4, "cc": 2, "dd": 1}

我要实现的分类字典的顺序是从大到小。我希望结果如下:

bb 4
aa 3
cc 2
dd 1

排序之后,我想把它存储到一个文本文件中。


Tags: 方法列表字典排序顺序分类ddaa
1条回答
网友
1楼 · 发布于 2024-05-10 21:21:05

itemgetter(如我所知)对于大型词典更有效,但对于常见情况,我相信d.get会赢。而且它不需要额外的import

>>> d = {"aa": 3, "bb": 4, "cc": 2, "dd": 1}
>>> for k in sorted(d, key=d.get, reverse=True):
...     k, d[k]
...
('bb', 4)
('aa', 3)
('cc', 2)
('dd', 1)

请注意,您也可以将d.__getitem__设置为key函数,该函数可以提供比d.get小的性能提升。

网友
2楼 · 发布于 2024-05-10 21:21:05

为了对字典进行排序,我们可以使用运算符模块。Here是操作模块文档。

import operator                             #Importing operator module
dc =  {"aa": 3, "bb": 4, "cc": 2, "dd": 1}  #Dictionary to be sorted

dc_sort = sorted(dc.items(),key = operator.itemgetter(1),reverse = True)
print dc_sort

输出序列将是一个排序列表:

[('bb', 4), ('aa', 3), ('cc', 2), ('dd', 1)]

如果我们想按钥匙分类,我们可以利用

dc_sort = sorted(dc.items(),key = operator.itemgetter(0),reverse = True)

输出顺序为:

[('dd', 1), ('cc', 2), ('bb', 4), ('aa', 3)]
网友
3楼 · 发布于 2024-05-10 21:21:05
from collections import OrderedDict
from operator import itemgetter    

d = {"aa": 3, "bb": 4, "cc": 2, "dd": 1}
print(OrderedDict(sorted(d.items(), key = itemgetter(1), reverse = True)))

印刷品

OrderedDict([('bb', 4), ('aa', 3), ('cc', 2), ('dd', 1)])

尽管从你的最后一句话来看,一个元组列表似乎可以很好地工作,例如

from operator import itemgetter  

d = {"aa": 3, "bb": 4, "cc": 2, "dd": 1}
for key, value in sorted(d.items(), key = itemgetter(1), reverse = True):
    print(key, value)

哪个指纹

bb 4
aa 3
cc 2
dd 1

相关问题 更多 >