我正在尝试创建一个字典列表,其中列表中的字典是从预先存在的字典列表创建的,应该根据每个字典的键值对的聚合创建一个新的字典。如果密钥是另一个预先存在的列表(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中的键值对。
答案 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]}