列表理解中的字典理解,每个字典在其他列表中

时间:2016-07-06 21:11:43

标签: python list-comprehension dictionary-comprehension

我正在尝试创建一个字典列表,其中列表中的字典是从预先存在的字典列表创建的,应该根据每个字典的键值对的聚合创建一个新的字典。如果密钥是另一个预先存在的列表(child_container)的成员,则预先存在的字典列表。

或者换句话说,我试图过滤掉不是list_multiple_tagnames成员的词典列表(child_container)中词典(d)中的键。

[d for d in child_container if isinstance(d, dict) for k, v in d.iteritems() if k in lst_multiple_tagnames]

预期效果是在child_container中为字典d制作字典,只有lst_multiple_tagnames中的键值对。

2 个答案:

答案 0 :(得分:1)

必须使用dict理解,复合for不能捕获每字典每个键的范围。

[{k:v for k,v in d.iteritems() if k in lst_multiple_tagnames} for d in child_container if isinstance(d, dict)]

答案 1 :(得分:0)

assume child_container = [{ 1:1,3:324,2:2334}, {1:123},{2:2}]
for d in child_container:
...     if isinstance(d,dict):
...         for k in d:
...             res[k] = res.get(k,[]) + [d[k]]
print res
{1: [1, 123], 2: [2334, 2], 3: [324]}