Объединение словарей с отсутствующими ключами для создания комбинированного словаря - PullRequest
0 голосов
/ 10 июня 2018

Ввод 3 словаря d1 / d2 / d3

d1 = {aa:1, bb:2, cc:3}

d2 = {aa:9, cc:4, jj:8}

d3 = {aa:5, bb:0, kk:88}

Обязательный окончательный

final = {aa: [1,9,5], bb: [2,'Not in d2',0], cc: [3,4,'Not in d3'], 
         jj: ['Not in d1',8,''Not in d3'], kk: ['Not in d1','Not in d2',88]}

Обязательный - один словарь со значением ключа, как показано ниже.Положение значений должно быть в порядке словаря.

Кроме того, если ключ отсутствует в каком-либо словаре, то «Не в d1 / d2 / d3 / ... должен идти в соответствующей позиции в качестве значений.Я могу объединить словари, но не могу сохранить отсутствующую ключевую информацию в качестве значения в окончательной редакции

1 Ответ

0 голосов
/ 10 июня 2018

Один из способов - вычислить объединение ключей вашего словаря.Затем используйте dict.get в понимании словаря, чтобы создать словарь, сопоставляющий ключи со списками.

keys = set().union(d1, d2, d3)

final = {k: [d1.get(k, 'Not in d1'),
             d2.get(k, 'Not in d2'),
             d3.get(k, 'Not in d3')] for k in keys}

print(final)

{'bb': [2, 'Not in d2', 0],
 'aa': [1, 9, 5],
 'cc': [3, 4, 'Not in d3'],
 'kk': ['Not in d1', 'Not in d2', 88],
 'jj': ['Not in d1', 8, 'Not in d3']}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...