我曾经通过
获取排序列表dicttmp = {5:2, 2:5, 4: 3}
sorteddata = sorted(dicttmp.iteritems(), key = lambda d : d[1])
在python 2.7中。
从上面的代码中,我可以获得一个列表,dicttmp
中的每对键和值组成一个元组作为列表中的元素,列表由value
dicttmp
排序}。
但是现在,我安装了python 3.3,我了解到用户手册中不再支持方法iteritems()
。如何获取列表或按dicttmp
排序value
?
有人能帮帮我吗?非常感谢。
答案 0 :(得分:2)
在Python 3中,iteritems()
不再存在; items()
方法本身返回一个迭代器,获取项列表的唯一方法是使用list(dicttmp.items())
显式创建一个。
此外,您可能希望使用itemgetter
模块中的operator
函数来提供key
函数。它比使用lambda表达式更有效。
from operator import itemgetter
sorted_data = sorted(dicttmp.items(), key=itemgetter(1))
答案 1 :(得分:2)
在Python 3中,dict.iteritems()
已被删除,只需使用dict.items()
代替:
sorteddata = sorted(dicttmp.items(), key=lambda d: d[1])
答案 2 :(得分:1)
一个建议是使用ordered dict:
来自示例:
>>> # 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)])