Вывод ключей и их значений

pizza = {'мука, кг': 1,
         'помидоры, кг': 1.5,
         'шампиньоны, кг': 1.5,
         'сыр, кг': 0.8,
         'оливковое масло, л': 0.1,
         'дрожжи, г': 50}
salad = {'огурцы, кг': 1,
         'перцы, кг': 1,
         'помидоры, кг': 1.5,
         'оливковое масло, л': 0.1,
         'листья салата, кг': 0.4}
  
print_shopping_list(pizza, salad)

мой код, возможно, не правильный:

def print_shopping_list(list1, list2):
    print(', '.join(set(list1).union(set(list2))))

Ответы (2 шт):

Автор решения: dIm0n

Вот так вот:

pizza = {'мука, кг': 1,
         'помидоры, кг': 1.5,
         'шампиньоны, кг': 1.5,
         'сыр, кг': 0.8,
         'оливковое масло, л': 0.1,
         'дрожжи, г': 50}
salad = {'огурцы, кг': 1,
         'перцы, кг': 1,
         'помидоры, кг': 1.5,
         'оливковое масло, л': 0.1,
         'листья салата, кг': 0.4}

print(dict(pizza, **salad))

В питоне 3.9 добавят объединение словарей явно и можно будет писать pizza | salad

→ Ссылка
Автор решения: Хачатур Саркисян

Способов решений данной проблемы много. Ниже представлен метод с использованием chain.from_iterable модуля itertools. Данный метод учитывает, что словари не будут объединены в случае одинаковых ключей в переменных pizza и salad

from itertools import chain
izza = {'мука, кг': 1,
         'помидоры, кг': 1.5,
         'шампиньоны, кг': 1.5,
         'сыр, кг': 0.8,
         'оливковое масло, л': 0.1,
         'дрожжи, г': 50}
salad = {'огурцы, кг': 1,
         'перцы, кг': 1,
         'помидоры, кг': 1.5,
         'оливковое масло, л': 0.1,
         'листья салата, кг': 0.4}

foods = chain.from_iterable([pizza.items(), salad.items()])

for food, measure in foods:
    print(food, measure)

→ Ссылка