用文字来解释有点困难,所以我举个例子:
我有什么(数据
是一个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]}
键的顺序应该根据嵌套列表中的项目顺序进行更改
最佳答案
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]))
首先对值进行排序。如果不需要原始的data
,原地做也可以,不过我做了一个临时变量。
key
是一个返回要排序的键的函数。在这种情况下,键是项目元组(列表)的第二个元素,并且由于列表是可比较的,所以这就足够了。
关于python - 使用列表类型的值(按列表值的顺序)从字典创建 OrderedDict,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35321296/