ofk*_*fko 14 python dictionary list
可能重复:
Python:按值对字典排序
d = {"a":4, "b":12, "c":2}
Run Code Online (Sandbox Code Playgroud)
如果我使用sorted()与lambda:
s = sorted(d.items(), key=lambda(k,v):(v,k))
Run Code Online (Sandbox Code Playgroud)
我得到一个列表元组(键,值)但我又想要一个字典:
{"c":2, "a":4, "b":12}
Run Code Online (Sandbox Code Playgroud)
而dict(the_list_of_tuples)你正在回到原点.
Dav*_*ebb 10
标准dict对象未排序,因此不保证或保留任何排序.这是因为你通常使用dict得到一个键的顺序是不重要的.
如果您想保留命令你可以使用的OrderedDict.这没有排序,但确实记住了项目添加到它的顺序.因此,您可以按排序顺序使用键值对创建一个:
>>> d = {"a":4, "b":12, "c":2}
>>> from collections import OrderedDict
>>> od = OrderedDict(sorted(d.items(), key=lambda(k,v):(v,k)))
>>> od
OrderedDict([('c', 2), ('a', 4), ('b', 12)])
Run Code Online (Sandbox Code Playgroud)
这是不可能的。您只能获得像您所获得的字典的排序表示。
编辑
刚刚做了一些研究。看起来 Python 2.7 有一个叫做 OrderedDict 的东西,它可以让你做到这一点。以下是有关它的更多信息:http://docs.python.org/library/collections.html ?highlight=ordereddict#ordereddict-examples-and-recipes