Практикум 9 закрепляет set, dict, frozenset и вложенные структуры.
Для чисел, кратных 3 или 5, подходит set comprehension с условием.
Общие ключи двух словарей удобно искать через пересечение set(dict1) & set(dict2).
Список строк превращается в словарь длин через dict comprehension.
Подмножество словаря означает совпадение пар ключ-значение, а не только ключей.
Пустые значения можно удалить comprehension с проверкой truthiness.
frozenset нужен как ключ, когда набор элементов не должен зависеть от порядка.
В задачах с вводом отделяйте чистую логику от input(), чтобы проще тестировать.
Топ-3 ошибки: проверять подмножество словаря только по ключам; терять рецепты с одинаковым набором ингредиентов; использовать set как ключ вместо frozenset.
Подмножество только по ключам
Ключ может совпасть, а значение отличаться.
Как исправить
Проверяйте item in dict2.items().
Потерять дубли рецептов
Одинаковый набор ингредиентов может иметь несколько блюд.
Как исправить
Храните список рецептов под одним frozenset-ключом.
set как ключ
Обычный set изменяемый и нехешируемый.
Как исправить
Используйте frozenset.
Удалить 0 вместе с пустыми значениями
if value удаляет также 0 и False.
Как исправить
Если 0 допустим, проверяйте только None, '', [] явно.
Смешать input() и алгоритм
Такой код сложнее проверять.
Как исправить
Сначала напишите функцию на готовых данных, потом добавьте ввод.