【问题标题】:python dictionary sorting value within a valuepython字典对值内的值进行排序
【发布时间】:2018-04-10 22:02:58
【问题描述】:

以下工作正常:

from operator import itemgetter
d = { "a":(4,15), "c":(3,2), "b":(12,6) }
for k, v in sorted(d.items(), key=itemgetter(1)):
    print k, v

这会返回:

c (3, 2)
a (4, 15)
b (12, 6)

但我想按v 的第二个元素排序:[15, 2, 6]

获得dict 的印象这是不可能的。真的?

我环顾四周,但似乎找不到...按v 排序意味着项目的顺序很重要。

【问题讨论】:

  • 没有内置函数,但您几乎不限于 key 参数的内置函数:key=lambda item: item[1][1]
  • 好像有答案会试试的

标签: python sorting dictionary


【解决方案1】:

Python 中没有原生函数组合。

但第 3 方 toolz 库确实允许这样做:

from operator import itemgetter
from toolz import compose

d = { "a":(4,15), "c":(3,2), "b":(12,6) }

for k, v in sorted(d.items(), key=compose(itemgetter(1), itemgetter(1))):
    print(k, v)

或者,您可以使用匿名lambda 函数:

for k, v in sorted(d.items(), key=lambda x: x[1][1]):
    print(k, v)

相关:Nested lambda statements when sorting lists

【讨论】:

    猜你喜欢
    • 2017-10-13
    • 2021-10-15
    • 1970-01-01
    • 1970-01-01
    • 2015-07-14
    • 1970-01-01
    • 2016-08-31
    • 2016-01-07
    • 2014-01-23
    相关资源
    最近更新 更多