Как объединить два словаря на основе их ключей и значений в Python? - PullRequest
0 голосов
/ 14 декабря 2018

У меня проблема с объединением двух словарей в Python на основе его ключей и значений.У меня есть следующий случай:

dictionary_1 = { 1{House: red, index=1} , 2{House: blue, index=2} , 3{House: green, index=3}}



dictionary_2 = { 4{Height: 3, index =3} , 5{Height: 5, index=1} , 6{Height: 6, index=2}

Так, например, в "dictionary_1" , у меня есть большой словарь, чьи ключи "1" и "2" и "3« и его значения :« {House: red, index = 1} »и« {House: blue, index = 2} »и« {House: green, index = 3} ». Как видите, значения большого словаря сами являются словарями.Та же логика применима и к словарю_2.

Моя цель - сравнить значения двух больших словарей: «словарь_1» и «словарь_2».Затем, если элементы «Index» в двух словарях имеют одинаковые значения, я хочу объединить их, не дублируя элемент «index».

Поэтому на выходе должно быть что-то вроде:

dictionary_output = { 1{House: red, index=1, Height:5} , 2{House: blue, index=2, Height:6} , 3{House: green, index=3, Height: 3}}

1 Ответ

0 голосов
/ 14 декабря 2018

setdefault - ваш друг в таких проблемах

dictionary_1 = { 1: { "House": "red", "index": 1},
                 2: { "House": "blue", "index": 2},
                 3: { "House": "green", "index": 3}}

dictionary_2 = { 4: { "Height": 3, "index": 3},
                 5: { "Height": 5, "index": 1},
                 6: { "Height": 6, "index": 6}}

output = {}

for k, v in dictionary_1.items():
    o = output.setdefault(v.get("index"), {})
    o['House'] = v['House']
    o['index'] = v['index']

for k, v in dictionary_2.items():
    o = output.setdefault(v.get("index"), {})
    o['Height'] = v['Height']
print(output)

даст:

{1: {'House': 'red', 'Height': 5, 'index': 1}, 2: {'House': 'blue', 'index': 2}, 3: {'House': 'green', 'Height': 3, 'index': 3}, 6: {'Height': 6}}
...