Python usuwa zduplikowaną wartość z połączonej listy słowników
Potrzebuję trochę pomocy domowej. Muszę napisać funkcję, która łączy kilka słowników w nowy słownik. Jeśli klucz pojawia się więcej niż raz; wartości odpowiadające temu kluczowi w nowym słowniku powinny być unikalną listą. Jako przykład mam do tej pory:
f = {'a': 'apple', 'c': 'cat', 'b': 'bat', 'd': 'dog'}
g = {'c': 'car', 'b': 'bat', 'e': 'elephant'}
h = {'b': 'boy', 'd': 'deer'}
r = {'a': 'adam'}
def merge(*d):
newdicts={}
for dict in d:
for k in dict.items():
if k[0] in newdicts:
newdicts[k[0]].append(k[1])
else:
newdicts[k[0]]=[k[1]]
return newdicts
combined = merge(f, g, h, r)
print(combined)
Dane wyjściowe wyglądają tak:
{'a': ['apple', 'adam'], 'c': ['cat', 'car'], 'b': ['bat', 'bat', 'boy'], 'e' : ['elephant'], 'd': ['dog', 'deer']}
Pod klawiszem „b” „bat” pojawia się dwukrotnie. Jak usunąć duplikaty?
Zajrzałem pod filtrowanie, lambda, ale nie mogłem zrozumieć, jak z nim korzystać (może b / c to lista w słowniku?)
Każda pomoc byłaby doceniana. Z góry dziękuję za wszelką pomoc!