我怎样才能按字典的值来分类呢?

2024-09-25 16:28:40 发布

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

我以前是通过

dicttmp = {5:2, 2:5, 4: 3}
sorteddata = sorted(dicttmp.iteritems(), key = lambda d : d[1])

在Python2.7中。 从上面的代码中,我可以得到一个列表,dicttmp中的每一对键和值组成一个元组作为列表中的一个元素,列表按dicttmpvalue排序。你知道吗

但是现在,我安装了python3.3,我了解到用户手册中不再支持方法iteritems()。如何获取列表或按其value进行dicttmp排序?你知道吗

有人能帮我吗?非常感谢。你知道吗


Tags: 方法lambdakey代码元素列表排序value
3条回答

一个建议是使用ordereddict:

从示例中可以看出:

>>> # regular unsorted dictionary
>>> d = {'banana': 3, 'apple':4, 'pear': 1, 'orange': 2}

>>> # dictionary sorted by key
>>> OrderedDict(sorted(d.items(), key=lambda t: t[0]))
OrderedDict([('apple', 4), ('banana', 3), ('orange', 2), ('pear', 1)])

>>> # dictionary sorted by value
>>> OrderedDict(sorted(d.items(), key=lambda t: t[1]))
OrderedDict([('pear', 1), ('orange', 2), ('banana', 3), ('apple', 4)])

>>> # dictionary sorted by length of the key string
>>> OrderedDict(sorted(d.items(), key=lambda t: len(t[0])))
OrderedDict([('pear', 1), ('apple', 4), ('orange', 2), ('banana', 3)])

在python3中,iteritems()不再存在;items()方法本身返回一个迭代器,获得项目列表的唯一方法是显式创建一个带有list(dicttmp.items())的项目。你知道吗

此外,您可能希望使用operator模块中的itemgetter函数来提供key函数。它比使用lambda表达式更有效。你知道吗

from operator import itemgetter
sorted_data = sorted(dicttmp.items(), key=itemgetter(1))

在Python3中,删除了dict.iteritems(),只需使用dict.items()

sorteddata = sorted(dicttmp.items(), key=lambda d: d[1])

相关问题 更多 >