если у меня есть 2 дикта:
d1 = {1:[2,3,str],2:[4,5,str2]}
d2 = {3:[6,7],2:[8,9]}
и я хочу создать новый словарь, который будет содержать только ключи, которые появляются в обоих словарях
new_d = {2:[4,5,str2,8,9]}
С каким кодом у вас возникли проблемы? Какие проблемы с кодом? Вы получаете сообщение об ошибке? Что за сообщение об ошибке? Результат, который вы получаете, не тот результат, которого вы ожидаете? Какого результата вы ожидаете и почему, какой результат вы получаете и чем они отличаются? Наблюдаемое вами поведение не является желаемым? Каково желаемое поведение и почему, каково наблюдаемое поведение и чем они отличаются? Пожалуйста, предоставьте минимальный воспроизводимый пример.
Можете ли вы предоставить спецификацию точный того, что вы хотите, включая все правила, исключения из этих правил, угловые случаи, особые случаи, граничные случаи и крайние случаи? Можете ли вы предоставить образцы входных и выходных данных, демонстрирующие, что вы ожидаете, как в обычных случаях, так и во всех исключениях, угловых случаях, особых случаях, граничных случаях и пограничных случаях? Пожалуйста, также не забудьте предоставить минимальный воспроизводимый пример.
«как разделить два словаря на один» - вы делаете это, написав программу, которая это делает. Если у вас возникла проблема с вашей программой, внимательно прочтите документацию по всем методам, классам, модулям и библиотекам, которые вы используете, напишите тесты для своих программ, отслеживайте выполнение ручкой и бумагой, выполните пошаговое выполнение в отладчике, затем усните на нем, начните снова с начала, снова усните, и тогда и только тогда сузит вашу проблему до краткого, целенаправленного, простого, короткого, воспроизводимого минимальный воспроизводимый пример и задает конкретный, сфокусированный, узкий вопрос о Переполнение стека.
@ JörgWMittag, почему пример абсолютно необходим? Иногда даже не знаешь, с чего начать.
@MarkRansom: Во-первых, это показывает, что ОП действительно приложили все усилия для решения проблемы сами. Я полностью согласен с тем, что здесь, на этом сайте, есть примеры находятся хорошо исследованных, хорошо сформулированных, хорошо отформатированных, чрезвычайно ценных, нерешенных вопросов, которые не содержат никакого кода, но я заявлю, что этот конкретный вопрос не входит в их число .






{k: d1[k] + d2[k] for k in set(d1.keys()).intersection(d2.keys())}
Эта конструкция {... for ... in ... } называется словарным пониманием.
.keys() на самом деле не нужны в обоих случаях, но они проясняют, что происходит. Самый короткий вариант:
{k: d1[k] + d2[k] for k in set(d1) & set(d2)}
Оператор & примерно эквивалентен .intersection для наборов, а set(d1) работает, потому что итерация по словарю выполняет итерацию по его ключам.
что ты уже испробовал?