L = [{k: d[k](v) for (k, v) in l.iteritems()} for l in L]
其中
L
是有序词典的列表(即collections.OrderedDict的对象),其中词典具有相同的键集。
d
是另一个有序字典,它与前面排序的字典具有相同的密钥集。
对于每个key
,d[key]
是一个可以应用于L[i][key]
的函数,即d[key](L[i][key])
。
所有给定的词典都是有序的词典,并且在键中具有相同的顺序。
但是代码会创建一个无序字典。如何以与给定的有序词典相同的键顺序创建有序的dict?
答案 0 :(得分:9)
collections.OrderedDict
只是一个字典,它记住元素包含在其中的顺序。所以你可以用它的构造函数创建一个
[OrderedDict((k, d[k](v)) for (k, v) in l.iteritems()) for l in L]
答案 1 :(得分:4)
与C ++字典不同的Python字典是无序的,因为它使用哈希作为其键。另一种方法是使用名为collections.OrdredDict的python字典的有序特化。
这会将您的声明变为
from collections import OrderedDict
L = [OrderedDict((k, d[k](v)) for (k, v) in l.iteritems()) for l in L]