如何检查特定单词是否包含在字典值中 - Python
how to check whether specific word are included in dictionary value - Python
我想做一个搜索程序,但我卡在了特定的算法中。
首先,我会从用户那里得到任何消息
然后检查用户的词是否包含在 di 值的任何关键字中。如果包含用户的话,则 return 键值作为列表类型。如果没有包含用户的话,则执行程序。
例如,如果我输入“nice guy”,那么函数应该return 'matthew'作为列表类型。
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))
我一直坚持接近算法...
我希望你们能给我一些建议或想法来制作这个算法。
您可以像下面这样使用列表理解来提取匹配的键:
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']
理解
首先,您可以使用 ChainMap
合并您的字典
from collections import ChainMap
chain = ChainMap(*dicts)
然后您可以使用列表推导式进行搜索以获得更好的性能
results = [v for v in chain.values() if 'keyword' in v]
过滤器
您也可以使用 python filter 函数
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
我想做一个搜索程序,但我卡在了特定的算法中。 首先,我会从用户那里得到任何消息 然后检查用户的词是否包含在 di 值的任何关键字中。如果包含用户的话,则 return 键值作为列表类型。如果没有包含用户的话,则执行程序。
例如,如果我输入“nice guy”,那么函数应该return 'matthew'作为列表类型。
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))
我一直坚持接近算法... 我希望你们能给我一些建议或想法来制作这个算法。
您可以像下面这样使用列表理解来提取匹配的键:
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']
理解
首先,您可以使用 ChainMap
合并您的字典from collections import ChainMap
chain = ChainMap(*dicts)
然后您可以使用列表推导式进行搜索以获得更好的性能
results = [v for v in chain.values() if 'keyword' in v]
过滤器
您也可以使用 python filter 函数
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