假设我们有一个字典,其键是食物名称。
用户可以输入食物名称字符串(即“香蕉酸奶牛排芝士蛋糕”),为了简单起见,我们假设所有内容都是小写的,并且没有食物名称在字符串中出现多次。
找出字典中的哪些键出现在食物名称字符串中的最有效方法是什么?我们假设有可能根本没有键出现,也有可能食物名称字符串仅由字典键组成。
这是为了自学目的。使用后缀特里似乎是一个不错的选择,但我不确定如何优化它(因为在这种情况下可能有多个匹配)如果有众所周知的定理或引用文献,我真的很感激。
PS。感谢您的回答,但唯一的问题是食物名称不需要是一个单词。让我们考虑这样的事情。“淡咖啡冰淇淋”
这是一个 4 个字的长字符串,但只有 2 个食物名称:淡咖啡、冰淇淋
最佳答案
您可以使用set intersection为此目的:
set(food_string.split()) & food_dict.keys()
请注意,dict.keys()
虽然不是 set
,但支持 set
API。
如果无法识别食物名称的明确边界(例如空格 ),则可以使用以下内容:
[k for k in food_dict if k in food_string]
关于python - 给定一个长字符串,在字典中查找匹配的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58513411/