Не находит элемент в словаре

Есть словарь:

categories = {"Products" : ['продукты', 'еда']}

И такой код:

categorie = input('Category:')
if categorie in categories:
  print('pass')
else:
  print('not found')

Проблема в том, что при вводе 'продукты' или 'еда' выводится сообщение 'not found', то есть такого элемента якобы нет


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

Автор решения: Андрюха

Попробуйте заменить ваш if на такой:

if categorie in categories['Products']:

у вас же в словаре categories всего один ключ 'Products' и в его значении искомый список. Если в словаре categories еще категории-ключи которые содержат соответствующие списки и надо найти вхождение в объединенный список всех категорий то можно сформировать единый список по всем категориям. Вот пример вашей программы:

categories = {"Products" : ['продукты', 'еда'], "Products2" : ['продукты2', 'еда2']}

allcat=[]
for categorie in categories:
    allcat=allcat+categories[categorie]

categorie = input('Category:')
if categorie in allcat:
    print('pass')
else:
    print('not found')
→ Ссылка
Автор решения: Dmitry

Работать можно и с ключами и со значениями

categories = {"Products" : ['продукты', 'еда']}
# Проверить ключ
if "Products" in categories.keys():
  print("Есть такой ключ")

# Проверить по значенимям
for value in categories.values():
  if 'продукты' in value:
    print("Есть такое значение")

# Или сразу по ключам и значениям
for key, value in categories.items():
  print(f"ключ - {key} -> значение - {value}")

Применительно к вашему коду

categorie = input('Category:')
if categorie in categories.keys():
  print('pass')
else:
  print('not found')

Если вы ищете в значениях (из вопроса не очень понятно), тогда надо понимать, что внутри список и нужно спрашивать у него

categorie = input('Category:')
for value in categories.values():
  if categorie in value:
    print('pass')
  else:
    print('not found')
→ Ссылка