为什么排序时将“键”功能附加到我的OrderedDict的末尾?

时间:2018-10-11 14:54:29

标签: python python-3.x

我正在使用python 3.6.5,并且正在对OrderedDict进行排序,例如tmp.py

from collections import OrderedDict
d = OrderedDict()
d[6] = 'a'
d[5] = 'b'
d[3] = 'c'
d[4] = 'd'
print(d)
print("keys : {}".format(d.keys()))
d = OrderedDict(sorted(d.items()), key=lambda t: t[1])
print(d)
print("keys : {}".format(d.keys()))

运行tmp.py时,我得到:

OrderedDict([(6, 'a'), (5, 'b'), (3, 'c'), (4, 'd')])
keys : odict_keys([6, 5, 3, 4])
OrderedDict([(3, 'c'), (4, 'd'), (5, 'b'), (6, 'a'), ('key', <function <lambda> at 0x2ab444506bf8>)])
keys : odict_keys([3, 4, 5, 6, 'key'])

很显然,排序过程已经将key()函数附加到了我的新OrderedDict上。我相信我会按照this帖子中规定的相同方式对此进行排序。

问题: 为什么会发生这种情况,以及如何正确排序OrderedDict

1 个答案:

答案 0 :(得分:2)

您的括号放在错误的位置。

d = OrderedDict(sorted(d.items()), key=lambda t: t[1])

应为:

d = OrderedDict(sorted(d.items(), key=lambda t: t[1]))