【问题标题】:Sorting dictionary keys in python [duplicate]在python中对字典键进行排序[重复]
【发布时间】:2010-10-09 05:11:25
【问题描述】:

我有一个字典,其中每个键都引用一个 int 值。根据值将键排序到列表中的最佳方法是什么?

【问题讨论】:

  • 另外,这询问了按键排序,链接的答案是关于按值排序。

标签: python sorting


【解决方案1】:
my_list = sorted(dict.items(), key=lambda x: x[1])

【讨论】:

  • @user815423426 你编辑了我的帖子s/list/my_list/,因为“list 是 python 中的关键字”。您的编辑很好,但 list 不是关键字(c.f. docs.python.org/3/reference/lexical_analysis.html#keywords),所以我的程序片段将(字节码)编译并运行。然而,它是 __builtins__ 命名空间中的一个名称,使用名为 list 的语言环境变量隐藏该名称是不好的做法,并且使用名为 list 的全局变量覆盖它是很糟糕的做法,例如list = tuple.
【解决方案2】:
>>> mydict = {'a':1,'b':3,'c':2}
>>> sorted(mydict, key=lambda key: mydict[key])
['a', 'c', 'b']

【讨论】:

    【解决方案3】:

    我喜欢这个:

    sorted(d, key=d.get)
    

    【讨论】:

    • 很好,我认为有一个优雅的解决方案会很好,它提供按键排序的 (key,value) 对。 ...并且不需要多次提供 dict 变量名称(我倾向于使用很长的描述性变量名称)。 d.iteritems() 似乎仍然是最有用的。
    【解决方案4】:
    [v[0] for v in sorted(foo.items(), key=lambda(k,v): (v,k))]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-26
      • 2015-11-03
      • 2020-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-27
      相关资源
      最近更新 更多