【问题标题】:sort values and return list of keys from dict python [duplicate]从dict python中排序值并返回键列表[重复]
【发布时间】:2011-11-12 11:48:25
【问题描述】:

可能重复:
Python: Sort a dictionary by value

我有一本这样的字典:

A = {'Name1':34, 'Name2': 12, 'Name6': 46,....}

我想要一个按值排序的键列表,即[Name2, Name1, Name6....]

谢谢!!!

【问题讨论】:

  • 感谢@Felix 的建议,但我在问之前搜索过,答案不是我需要的。
  • 我不同意,您正在寻找的答案有很多类似的问题。例如。我链接到的问题中投票第二高的答案提供了与此处投票最高的答案相同的解决方案,例如these answers。您可能需要尝试一些事情,但问题肯定已经在这里了。
  • “答案不是我需要的”。无用的说法。现有答案中缺少什么? 如何它们不完整或具有误导性? 是什么让您的问题与众不同?请具体

标签: python dictionary


【解决方案1】:

使用sortedget 方法作为键(iterating 可以访问字典键):

sorted(A, key=A.get)

【讨论】:

  • 这是不正确的,因为它只会对键进行排序,而不是按值对键进行排序。
  • 但这会返回一个按键排序的列表。我需要按值排序的键列表。 :)
  • @David Wolever 哎呀,你完全正确。固定。
【解决方案2】:

使用sortedkey 参数

sorted(d, key=d.get)

【讨论】:

    【解决方案3】:

    sorted(a.keys(), key=a.get)

    这会对键进行排序,并且对于每个键,使用a.get 来查找要用作其排序值的值。

    【讨论】:

    • 请注意,不必使用a.keys,它会列出密钥。 a(或a.iterkeys())已经是dict a的键的可迭代对象。
    • 是的,我知道这是不必要的,但我认为它读起来更好。我认为 dicts 是对的容器,而不是键的容器。
    【解决方案4】:

    我会使用:

    items = dict.items()
    items.sort(key=lambda item: (item[1], item[0]))
    sorted_keys = [ item[0] for item in items ]
    

    sort 的key 参数是一个可调用的,它返回要使用的排序键。在这种情况下,我返回一个元组 (value, key),但如果你愿意,你可以只返回值(即 key=lambda item: item[1])。

    【讨论】:

    • 另一种解决方案对我来说更简单,更容易阅读。
    猜你喜欢
    • 2012-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-12
    • 2016-06-13
    • 1970-01-01
    • 2013-05-22
    相关资源
    最近更新 更多