У меня есть два словаря. Один из них содержит ключи, которые равны значению предыдущего, могу ли я создать единый словарь?
d1={'k': ['k'], 'a': ['a1', 'e1', 'e4'], 'g': ['g']}
d2={'k': 2 , 'a1' : 3, 'e1':5 'e4':2, g': 1}
Или добавить значение второго словаря в первый вроде:
d3={'k': ['k', 2], 'a': ['a1',3, 'e1',5, 'e4',2], 'g': ['g',1]} (при необходимости можно заменить число на str)
Python
Pyton Объединение словарей в питоне, если ключи второго равны значениям первого
Я тоже сделал из теоретического интереса. Как всегда длинно, но главное что искомый результат получен
И получилось ИМЕННО { 'k': ['k', 2], 'a': ['a1',3, 'e1',5, 'e4',2], 'g': ['g',1] }

И получилось ИМЕННО { 'k': ['k', 2], 'a': ['a1',3, 'e1',5, 'e4',2], 'g': ['g',1] }

# Если изменять первый исходный
d1= { 'k': ['k'], 'a': ['a1', 'e1', 'e4'], 'g': ['g'] }
d2= { 'k': 2 , 'a1' : 3, 'e1':5, 'e4':2, 'g': 1 }
print(d1)
print(d2)
print()
for k in d1:
~~~~if k in d2:
~~~~~~~~d1[k].append(d2[k])
print(d1)
print()
#---------------
# Если не изменять исходные
import copy
d1= { 'k': ['k'], 'a': ['a1', 'e1', 'e4'], 'g': ['g'] }
d2= { 'k': 2 , 'a1' : 3, 'e1':5, 'e4':2, 'g': 1 }
d3 = dict()
print(d1)
print(d2)
print(d3)
print()
for k in d1:
~~~~d3[k] = copy.deepcopy(d1[k])
~~~~if k in d2:
~~~~~~~~d3[k].append(d2[k])
print(d1)
print(d2)
print(d3)
==================
{'k': ['k'], 'a': ['a1', 'e1', 'e4'], 'g': ['g']}
{'k': 2, 'a1': 3, 'e1': 5, 'e4': 2, 'g': 1}
{'k': ['k', 2], 'a': ['a1', 'e1', 'e4'], 'g': ['g', 1]}
{'k': ['k'], 'a': ['a1', 'e1', 'e4'], 'g': ['g']}
{'k': 2, 'a1': 3, 'e1': 5, 'e4': 2, 'g': 1}
{}
{'k': ['k'], 'a': ['a1', 'e1', 'e4'], 'g': ['g']}
{'k': 2, 'a1': 3, 'e1': 5, 'e4': 2, 'g': 1}
{'k': ['k', 2], 'a': ['a1', 'e1', 'e4'], 'g': ['g', 1]}
>>>
Вместо deepcopy, для одномерных списков, достаточно
d3[k] = d1[k][:]
но если будут многомерные списки,
то срезом скопировать не получится
d1= { 'k': ['k'], 'a': ['a1', 'e1', 'e4'], 'g': ['g'] }
d2= { 'k': 2 , 'a1' : 3, 'e1':5, 'e4':2, 'g': 1 }
print(d1)
print(d2)
print()
for k in d1:
~~~~if k in d2:
~~~~~~~~d1[k].append(d2[k])
print(d1)
print()
#---------------
# Если не изменять исходные
import copy
d1= { 'k': ['k'], 'a': ['a1', 'e1', 'e4'], 'g': ['g'] }
d2= { 'k': 2 , 'a1' : 3, 'e1':5, 'e4':2, 'g': 1 }
d3 = dict()
print(d1)
print(d2)
print(d3)
print()
for k in d1:
~~~~d3[k] = copy.deepcopy(d1[k])
~~~~if k in d2:
~~~~~~~~d3[k].append(d2[k])
print(d1)
print(d2)
print(d3)
==================
{'k': ['k'], 'a': ['a1', 'e1', 'e4'], 'g': ['g']}
{'k': 2, 'a1': 3, 'e1': 5, 'e4': 2, 'g': 1}
{'k': ['k', 2], 'a': ['a1', 'e1', 'e4'], 'g': ['g', 1]}
{'k': ['k'], 'a': ['a1', 'e1', 'e4'], 'g': ['g']}
{'k': 2, 'a1': 3, 'e1': 5, 'e4': 2, 'g': 1}
{}
{'k': ['k'], 'a': ['a1', 'e1', 'e4'], 'g': ['g']}
{'k': 2, 'a1': 3, 'e1': 5, 'e4': 2, 'g': 1}
{'k': ['k', 2], 'a': ['a1', 'e1', 'e4'], 'g': ['g', 1]}
>>>
Вместо deepcopy, для одномерных списков, достаточно
d3[k] = d1[k][:]
но если будут многомерные списки,
то срезом скопировать не получится
Похожие вопросы
- Почему никто не пользуется библиотеками pyton?
- Вопрос по словарю на pyton
- Что за зверь Питон.
- Код в питоне выдаёт неверное значение: 0 Может не так oct использовал?
- Питон во всем такой медленный? (сравнивал с JavaScript)
- Вы согласны с мнением, что питон хуже других языков программирования?
- Питон на сириусе. Кинотеатр
- Решить две задачи на питоне. Помогите пожалуйста
- Какой процент счастливых билетов в рулоне? Это когда сумма первых трёх цифр равна сумме последних трех
- Как сделать так чтобы питон воспринимал число 13, не как 1 и 3?
а не { 'k': ['k', 2], 'a': ['a1',3, 'e1',5, 'e4',2], 'g': ['g',1] }