Как проверить, включено ли конкретное слово в значение словаря - Python

Я хочу сделать программу поиска, но я застрял в определенном алгоритме. Во-первых, я получу любое слово от пользователей Затем проверьте, включены ли слова пользователя в какие-либо ключевые слова из значения di. Если слова пользователя включены, верните значение ключа в виде списка. Если слова пользователя не включены, то выполнить программу.

Например, если я ввожу «хороший парень», функция должна возвращать «Мэттью» в качестве типа списка.

dic_1 = {'matthew':'he is a nice guy', 'dennis':'he is a bad guy', 'alex':'he is a good guy'}
dic_2 = {'manchester': 'city from england', 'tokyo':'city from japan', 'rome':'city from italy'}

def searchWords(*dicts):
    list_check = []
    search = input("Enter word for search: ")
    for dic in dicts:
       if search in dic[word]:
          list_check.append(keyword)
       else:
          print("None")
          break
print(searchWords(dic_1))
     

Я продолжаю застревать для приближения к алгоритму... Я надеюсь, что вы, ребята, дадите мне совет или идею, чтобы сделать этот алгоритм.

Вам нужно перебрать все пары ключ: значение в dict, а затем проверить, включено ли слово в значение или нет.

Client 06.05.2022 12:40
print(x[0]) if len(x:=list(filter(lambda x: search_str in x[1], {'matthew':'he is a nice guy', 'dennis':'he is a bad guy', 'alex':'he is a good guy'}.items()))) else 'not found' с filter
Deepak Tripathi 06.05.2022 12:57

Пожалуйста, добавьте, что вы узнали при отладке неудачного примера.

MrSmith42 06.05.2022 13:57
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
3
58
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы можете попробовать, как показано ниже, используя понимание списка, чтобы вытащить совпадающие ключи:

dic_1 = {'matthew':'he is a nice guy', 'dennis':'he is a bad guy', 'alex':'he is a good guy'}
dic_2 = {'manchester': 'city from england', 'tokyo':'city from japan', 'rome':'city from italy'}

def searchWords(dictex):
    search = input("Enter word for search: ")
    return [k for k,v in dictex.items() if search in v]
print(searchWords(dic_1))

Выход:

Enter word for search: nice guy
['matthew']

Другой вывод:

Enter word for search: guy
['matthew', 'dennis', 'alex']

понимание

Во-первых, вы можете объединить свои словари, используя ЦепьКарта

from collections import ChainMap
chain = ChainMap(*dicts)

Затем вы можете искать, используя понимание списка для повышения производительности.

results = [v for v in chain.values() if 'keyword' in v]

фильтр

Вы также можете сделать это с помощью функции Python фильтр

newDict = dict(filter(lambda elem: 'keyword' in elem[1], chain.items()))
Ответ принят как подходящий

Простой способ

dic_1 = {'matthew':'he is a nice guy', 'dennis':'he is a bad guy', 'alex':'he is a good guy'}
dic_2 = {'manchester': 'city from england', 'tokyo':'city from japan', 'rome':'city from italy'}

def searchWords(*dicts):
    lst = []
    t = input('Write something to search:')
    for dict_ in dicts:
        for k,v in dict_.items():
            if t in v:
                lst+=[k]
    return lst

Использование понимания списка.

def searchWords(*dicts):
    t = input('Write something to search:')
    lst = [k for dict_ in dicts for k,v in dict_.items() if t in v]
    return lst

Другие вопросы по теме