объединить два словаря с одинаковыми значениями ключа - PullRequest
0 голосов
/ 13 марта 2019

У меня есть два словаря, которые состоят из одних и тех же ключей

a = {'a':[3,2,5],
     'b':[9,8],
     'c':[1,6]}

b = {'b':[7,4],
     'c':[10,11]}

Когда я объединяю их, ключи словаря b заменяют ключи a из-за одного и того же имени.Вот код слияния, который я использую

z = dict(list(a.items()) + list(b.items()))

Есть ли каким-то образом я могу сохранить все ключи, я знаю, что словари не могут иметь одинаковое имя ключа, но я могу работать с чем-то вроде этого:

a = {'a':[3,2,5],
     'b':[9,8],
     'c':[1,6],
     'b_1':[7,4],
     'c_1':[10,11]}

Ответы [ 4 ]

2 голосов
/ 13 марта 2019

Вы можете использовать выражение генератора внутри метода update():

a.update((k + '_1' if k in a else k, v) for k, v in b.items())
# {'a': [3, 2, 5], 'b': [9, 8], 'c': [1, 6], 'b_1': [7, 4], 'c_1': [10, 11]}
1 голос
/ 13 марта 2019

Возможно сделать что-то подобное:

a = {'a':[3,2,5],
     'b':[9,8],
     'c':[1,6]}

b = {'b':[7,4],
     'c':[10,11]}

z = {}

for key in a:
    if key in b:
        z[key + "_1"] = b[key]
        z[key] = a[key]
    else:
        z[key] = a[key]


print(z)                            

Вывод:

{'a': [3, 2, 5], 'b_1': [7, 4], 'b': [9, 8], 'c_1': [10, 11], 'c': [1, 6]}
1 голос
/ 13 марта 2019

Хотя я думаю, что ответ Усмана, вероятно, является «правильным» решением, технически вы просили об этом:

for key, value in b.items():
  if key in a:
    a[key + "_1"] = value
  else:
    a[key] = value
0 голосов
/ 13 марта 2019

Проверьте, присутствует ли ключ b в a, затем добавьте в a с ключом key_1 значение b для ключа, в противном случае добавьте ключ в значение a для ключа.

a = {'a':[3,2,5],
     'b':[9,8],
     'c':[1,6]}

b = {'b':[7,4],
     'c':[10,11]}
for k in b:
    if k in a:
        a[k+'_1']=b[k]
    else:
        a[k]=b[k]
print(a)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...