我用文字解释它有点困难,所以我将展示一个例子:
我的(data
是 dict 实例):
data = {'a':[4,5,3], 'b':[1,0,2], 'c':[6,7,8]}
我需要什么(ordered_data
是 OrderedDict 实例):
ordered_data = {'b':[0,1,2], 'a':[3,4,5], 'b':[6,7,8]}
应根据嵌套列表中的项目顺序更改键的顺序
答案 0 :(得分:3)
list.size()
首先对值进行排序。如果您不需要原始的IndexOutOfBoundsException
,那么可以这样做,但我做了一个临时变量。
tmp = {k:sorted(v) for k,v in data.items()}
ordered_data = OrderedDict((k,v) for k,v in sorted(tmp.items(), key=lambda i: i[1]))
是一个返回要排序的键的函数。在这种情况下,键是项元组(列表)的第二个元素,并且由于列表具有可比性,这就足够了。
答案 1 :(得分:2)
您可以使用OrderedDict
对项目和值进行排序:
>>> from operator import itemgetter
>>> from collections import OrderedDict
>>> d = OrderedDict(sorted([(k, sorted(v)) for k, v in data.items()], key=itemgetter(1)))
>>> d
OrderedDict([('b', [0, 1, 2]), ('a', [3, 4, 5]), ('c', [6, 7, 8])])
答案 2 :(得分:-2)
通常,你不应该担心字典本身的数据顺序,而是在检索字典的内容时jsut对它进行排序(即:迭代它):
data