在 Python 中我有这 2 个 dicts 对象:
dict1 = [{'id_contact': '1', 'name': 'Rick'},{'id_contact': '9', 'name': 'John'}]
dict2 = [{'id_company': ';1;3;4;11;', 'company_name': 'Nike'},{'id_company': ';1;2;9;', 'company_name': 'Adidas'}]
我想将这两个字典合并到一个新字典中,如果在 dict2 的
'company_name'
中找到 dict1 的 id_contact
,则添加 id_company
。
如果有多个匹配项我想使用“;”作为'company_name'
中的分隔符。
预期结果是:
dictmerge = [{'id_contact': '1', 'name': 'Rick', 'company_name': 'Nike;Adidas'},{'id_contact': '9', 'name': 'John', 'company_name': 'Adidas'}]
感谢您的帮助。
初步说明:
dict1
和dict1
是列表(字典),而不是字典。
您需要几个步骤,首先循环
dict2
以聚合每个 ID 的公司名称,然后将其展平为字符串。最后,循环 dict1
并添加缺少的键:
companies = {}
for d in dict2:
for i in d.get('id_company', '').strip(';').split(';'):
companies.setdefault(i, []).append(d['company_name'])
companies = {i: ';'.join(v) for i, v in companies.items()}
# {'1': 'Nike;Adidas', '3': 'Nike', '4': 'Nike', '11': 'Nike',
# '2': 'Adidas', '9': 'Adidas'}
for d in dict1:
d['company_name'] = companies.get(d['id_contact'])
print(dict1)
输出:
[{'id_contact': '1', 'name': 'Rick', 'company_name': 'Nike;Adidas'},
{'id_contact': '9', 'name': 'John', 'company_name': 'Adidas'}]