Sorting dictionary keys in python
我有一个dict,其中每个键引用一个int值。根据值将键排序到列表中的最佳方法是什么?
- 另外,这要求按键排序,链接的答案是按值排序。
- 下面的答案只返回键的排序列表(这很简单)。有关按值排序的"重复"问题的答案返回键/值对的排序列表(按值排序)。如果希望按键排序,只需使用0而不是作为operator.itemgetter()的参数。
我喜欢这一个。
- 很好,我认为最好有一个优雅的解决方案,它可以按键对(键、值)进行排序。…而且不需要多次提供dict变量名(我通常有很长的描述性变量名)。d.iteritems()仍然是最有用的。
- 第二个是优雅的分类k,v对解决方案
1 2 3
| >>> mydict = {'a':1,'b':3,'c':2}
>>> sorted(mydict, key=lambda key: mydict[key])
['a', 'c', 'b'] |
1
| my_list = sorted(dict.items(), key=lambda x: x[1]) |
- @用户815423426您编辑了我的文章s/list/my_list/,因为"list是python中的关键字"。您的编辑很好,但list不是关键字(c.f.docs.python.org/3/reference/lexical_analysis.html keywords),所以我的程序片段(字节码-)将编译并运行。但是,它是__builtins__命名空间中的一个名称,用一个名为list的区域设置变量来隐藏该名称是不好的做法,用一个名为list的全局变量(例如list = tuple覆盖该名称是很可怕的做法。
1
| [v[0] for v in sorted(foo.items(), key=lambda(k,v): (v,k))] |