我正在使用cassandra和python,我正在一起执行两个查询。我想使用列作为键将结果的结果组合成一个列表。
list1 = [{'firstname':'foo','lastname':'bar','id':1},{'firstname':'foo2','lastname':'bar2','id':2}]
list2 = [{'text':'sample','contact_no':'666','id':1},{'text':'sample2','contact_no':'111','id':1}, {'text':'sample3','contact_no':'121','id':2}]
我想使用 id 键将这两个列表组合在一起作为条件
预期结果
[{'firstname':'foo','lastname':'bar','id':1,'text':'sample','contact_no':'666'}, {'firstname':'foo','lastname':'bar','id':1,'text':'sample2','contact_no':'111'},{'firstname':'foo2','lastname':'bar2','id':2,'text':'sample3','contact_no':'121'}]
请告诉我如何以最pythonic的方式做到这一点。提前致谢。
答案 0 :(得分:2)
这是一种方式:
import itertools
list1 = [{'firstname':'foo','lastname':'bar','id':1},
{'firstname':'foo2','lastname':'bar2','id':2}]
list2 = [{'text':'sample','contact_no':'666','id':1},
{'text':'sample2','contact_no':'111','id':1},
{'text':'sample3','contact_no':'121','id':2}]
lst = []
for x, y in itertools.product(list1, list2):
if x['id'] == y['id']:
c = x.copy()
c.update(y)
lst.append(c)
print(lst)
# [{'firstname': 'foo', 'lastname': 'bar', 'id': 1, 'text': 'sample', 'contact_no': '666'},
# {'firstname': 'foo', 'lastname': 'bar', 'id': 1, 'text': 'sample2', 'contact_no': '111'},
# {'firstname': 'foo2', 'lastname': 'bar2', 'id': 2, 'text': 'sample3', 'contact_no': '121'}]