【问题标题】:Why is 'key' function appended to the end of my OrderedDict when sorting? [closed]为什么排序时我的 OrderedDict 末尾会附加“key”函数? [关闭]
【发布时间】:2018-10-11 14:54:29
【问题描述】:

我正在使用 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

【问题讨论】:

标签: python python-3.x


【解决方案1】:

你的括号放错地方了。

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

应该是:

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

【讨论】:

  • 非常好。我认为你是对的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-23
  • 1970-01-01
  • 2017-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多