Połącz dwa słowniki podczas udostępniania kluczy
Próbuję zbudować mały program, który, biorąc pod uwagę słownik zawierający nazwy i adresy oraz inny słownik, który zawiera nazwy i numery telefonów, powinien łączyć oba te dane (i nie nadpisywać się nawzajem). Ostateczny słownik wyjściowy powinien zawierać nazwę, adres (jeśli jest dostępny) i telefon (jeśli jest dostępny). Oto przykład:
addr = {'George': 'via Wagner, 23', 'White': 'Piazza Bologna, 1',
'L. Red': 'via A. Einstein, 12', 'Pete': 'via Pio'}
phone = {'Mark': '347 8987989', 'George': '06 89786765',
'Mauro B.': '3489878675', 'Pete': '07897878', 'L. Red': '09877887'}
I ostateczny słownik:
addr_phone(addr, phone) -->
{'George': {'address': 'via Wagner, 23'},
'Mark': {'phone': '347 8987989'},
'George': {'phone': '06 89786765'},
'L. Red': {'phone': '09877887', 'address': 'via A. Einstein, 12'},
'Pete': {'phone': '07897878', 'address': 'via Pio'},
'Mauro B.': {'phone': '3489878675'},
'White': {'address': 'Piazza Bologna, 1'}}
Próbowałem to napisać:
def addr_phone(addr, phone):
d3={}
d3.update(addr)
d3.update(phone)
for k,v in phone.items():
if k not in addr:
d3[k]=v
return d3
Ale dostaję wiele wystąpień o tej samej nazwie i to nie jest to, czego chcę. Dzięki za pomoc.