2017-04-09 4 views
0

はdictsの2つのリストを想定します顧客がリードから追加情報を更新するのdictは、名前が一致している:更新リストは

所望の出力:

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

私はzip()を試してからキーに一致するようにループしましたが、リストなのでリストインデックスはstrではなく整数でなければなりませんエラー

答えて

1

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'}] 
0

は、この上で私の呼び出しです:

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'}]