簡體   English   中英

使用其他字典列表中的鍵/值更新字典列表

[英]Update list of dicts with keys/values from another list of dicts

假設有兩個字典列表:

len(客戶)<len(潛在客戶):

customers = [{'name': 'Joe', 'age': 28}, {'name': 'Adam', 'age': 34}]

leads     = [{'name': 'Joe', 'city': 'NYC'}, {'name': 'Molly', 'city': 'LA'}, 
             {'name': 'Adam', 'city': 'Washington DC'}]

我需要使用潛在客戶的其他信息來更新客戶字典,因為名稱匹配:

所需的輸出:

output = [{'name': 'Joe', 'age': 28, 'city':'NYC'}, {'name': 'Adam', 'age': 34, 'city': 'Washington DC'}]

我試過zip(),然后遍歷以匹配鍵,但是由於它們是列表,因此出現“列表索引必須是整數,而不是str”錯誤

您可以使用銷售leads列表創建字典,在其中根據name存儲數據,然后使用名稱更新customers列表中的數據。

>>> leads_data = {}
>>> for lead in leads:
...     leads_data.setdefault(lead['name'], {}).update(lead)
...
>>> for c in customers:
...     c.update(leads_data.get(c['name'], {}))
...
>>> customers
[{'city': 'NYC', 'age': 28, 'name': 'Joe'},
 {'city': 'Washington DC', 'age': 34, 'name': 'Adam'}]

這是我的要求:

for d in customers:
    lead = [x for x in leads if x['name'] == d['name']]
    if lead:
        d.update(lead[0])

print(customers)

>>>
[{'city': 'NYC', 'age': 28, 'name': 'Joe'}, {'city': 'Washington DC', 'age': 34, 'name': 'Adam'}]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM