Объединить словари
Как объединить два словаря с выводом значений с одинаковыми ключами и с выводом None если ключ значение только одно
a = {'a': 1, 'b': 2, 'c': 3}
b = {'c': 3, 'd': 4, 'e': 5}
def vmeste(a, b):
for k, v in b.items():
if a.get(k):
a[k] = [a[k], v]
else:
a[k] = [None, v]
return a
print(vmeste(a, b))
На выходе
{'a': 1, 'b': 2, 'c': [3, 3], 'd': [None, 4], 'e': [None, 5]}
А хочу
{'a': [1, None], 'b': [2, None], 'c': [3, 3], 'd': [None, 4], 'e': [None, 5]}
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Для get можно задать значение по умолчанию, так что тут можно просто взять get у обоих словарей с дефолтным значением None. А перебирать тут нужно объединение ключей обоих словарей. Без sorted почему-то порядок следования ключей получается какой-то некрасивый, пришлось дополнительно сортировать.
a = {'a': 1, 'b': 2, 'c': 3}
b = {'c': 3, 'd': 4, 'e': 5}
c = {k:[a.get(k, None), b.get(k, None)] for k in sorted(set(a)|set(b))}
print(c)
Вывод:
{'a': [1, None], 'b': [2, None], 'c': [3, 3], 'd': [None, 4], 'e': [None, 5]}