Python 给定一个长字符串,在字典中查找匹配的字符串
让我们假设我们有一本字典,它的键是食物的名字 用户可以输入食物名称字符串(即“香蕉酸奶牛排奶酪蛋糕”),为了简单起见,我们假设所有内容都是小写,并且没有食物名称在字符串中出现多次 找出字典中哪些键出现在食物名称字符串中的最有效方法是什么?让我们假设可能根本并没有键出现,也可能食物名称字符串只包含字典键 这是为了自学。使用后缀Trie似乎是一个不错的选择,但我不确定如何优化它(因为在这种情况下可能有多个匹配项)。如果有关于它的著名定理或参考文献,我将非常感激Python 给定一个长字符串,在字典中查找匹配的字符串,python,string,dictionary,trie,Python,String,Dictionary,Trie,让我们假设我们有一本字典,它的键是食物的名字 用户可以输入食物名称字符串(即“香蕉酸奶牛排奶酪蛋糕”),为了简单起见,我们假设所有内容都是小写,并且没有食物名称在字符串中出现多次 找出字典中哪些键出现在食物名称字符串中的最有效方法是什么?让我们假设可能根本并没有键出现,也可能食物名称字符串只包含字典键 这是为了自学。使用后缀Trie似乎是一个不错的选择,但我不确定如何优化它(因为在这种情况下可能有多个匹配项)。如果有关于它的著名定理或参考文献,我将非常感激 附言:谢谢你的回答,但唯一的问题是食品
附言:谢谢你的回答,但唯一的问题是食品名称不需要一个单词长。让我们想想这样的事情 “淡咖啡冰淇淋” 这是一个4字长的字符串,但只有两个食物名称:淡咖啡、冰淇淋您可以使用:
set(food_string.split()) & food_dict.keys()
请注意,dict.keys()
,虽然不是set
,但支持set
API
如果无法确定食品名称的明确边界(如空格
),则可以使用以下选项:
[k for k in food_dict if k in food_string]
这就是你的意思吗
dict = {
"banana": "answer1",
"steak": "answer1",
"cheese": "answer1"
}
input = "banana yogurt steak cheese cake"
for word in input.split():
print (word)
if word in dict:
print ("true")
输出:
banana
true
yogurt
steak
true
cheese
true
cake
banana milk shake
true
steak
true
ice cream
true
salad dressing
false
如果不是一个词:
dict = {
"banana milk shake": "answer1",
"steak": "answer2",
"ice cream": "answer3",
"salad dressing": "answer4"
}
input = "banana milk shake yogurt steak cheese ice cream cake"
for key in dict:
print (key)
if key in input:
print ("true")
else:
print ("false")
输出:
banana
true
yogurt
steak
true
cheese
true
cake
banana milk shake
true
steak
true
ice cream
true
salad dressing
false
这本字典的键是键。价值观是什么?如果它们不重要,你真的需要一本字典吗?或者它是一套吗?@MAK值不重要。这可能是一个非常感谢你的回答,但唯一的问题是食物名称不需要一个单词长。让我们想想这样的事情。“淡咖啡冰淇淋”是4个单词长的字符串,但只有2个食物名称:淡咖啡、冰淇淋谢谢你的回答,但唯一的问题是食物名称不需要一个单词长。让我们想想这样的事情。“淡咖啡冰淇淋”是4个单词长的字符串,但只有2个食物名称:淡咖啡,冰淇淋不知何故,你需要一个参考。我假设您的键是正确的值。换个方向走。如果您仍然想使用方法1。请另列一份清单作为参考。检查我的编辑。