Python 展平两个字典列表的乘积
我有两个词典列表,我正试图从中获取产品:Python 展平两个字典列表的乘积,python,itertools,Python,Itertools,我有两个词典列表,我正试图从中获取产品: from itertools import product list1 = [{'A': 1, 'B': 1}, {'A': 2, 'B': 2}, {'A': 2, 'B': 1}, {'A': 1, 'B': 2}] list2 = [{'C': 1, 'D': 1}, {'C': 1, 'D': 2}] for p in product(list1, list2): print p 这给了我输出: ({'A': 1, 'B': 1
from itertools import product
list1 = [{'A': 1, 'B': 1}, {'A': 2, 'B': 2}, {'A': 2, 'B': 1}, {'A': 1, 'B': 2}]
list2 = [{'C': 1, 'D': 1}, {'C': 1, 'D': 2}]
for p in product(list1, list2):
print p
这给了我输出:
({'A': 1, 'B': 1}, {'C': 1, 'D': 1})
({'A': 1, 'B': 1}, {'C': 1, 'D': 2})
({'A': 2, 'B': 2}, {'C': 1, 'D': 1})
({'A': 2, 'B': 2}, {'C': 1, 'D': 2})
({'A': 2, 'B': 1}, {'C': 1, 'D': 1})
({'A': 2, 'B': 1}, {'C': 1, 'D': 2})
({'A': 1, 'B': 2}, {'C': 1, 'D': 1})
({'A': 1, 'B': 2}, {'C': 1, 'D': 2})
如何将这些数据展平,使输出为单个dict而不是一组dict
{'A': 1, 'B': 1, 'C': 1, 'D': 1}
{'A': 1, 'B': 1, 'C': 1, 'D': 2}
{'A': 2, 'B': 2, 'C': 1, 'D': 1}
{'A': 2, 'B': 2, 'C': 1, 'D': 2}
{'A': 2, 'B': 1, 'C': 1, 'D': 1}
{'A': 2, 'B': 1, 'C': 1, 'D': 2}
{'A': 1, 'B': 2, 'C': 1, 'D': 1}
{'A': 1, 'B': 2, 'C': 1, 'D': 2}
看起来你想合并字典
for p1, p2 in product(list1, list2):
merged = {**p1, **p2}
print(merged)
在Python的早期版本中,不能与此表达式合并。使用
p1.update(p2)
。谢谢,我正在使用python 2.7,所以我尝试了p1.merge(p2)
,但这给了我:AttributeError:'dict'对象没有属性“merge”
@Michael:对不起,我的意思是update()
不是merge*()