python - 给定一个长字符串,在字典中查找匹配的字符串

标签 python string dictionary trie

假设我们有一个字典,其键是食物名称。

用户可以输入食物名称字符串(即“香蕉酸奶牛排芝士蛋糕”),为了简单起见,我们假设所有内容都是小写的,并且没有食物名称在字符串中出现多次。

找出字典中的哪些键出现在食物名称字符串中的最有效方法是什么?我们假设有可能根本没有键出现,也有可能食物名称字符串仅由字典键组成。

这是为了自学目的。使用后缀特里似乎是一个不错的选择,但我不确定如何优化它(因为在这种情况下可能有多个匹配)如果有众所周知的定理或引用文献,我真的很感激。

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/

相关文章:

python:打印十六进制数据而不是字典

python - 如何在变量后抑制回车?

python - 加速从 pandas dataframe 到 mysql 的数据插入

python - 导入错误 : cannot import name when using pytest

string - 如何计算与一组子集匹配的某些字符串的排列数?

regex - 使用 r 从字符串中提取电子邮件地址

python - 如何保留 python 字典中的项目?

ruby - 为什么 Ruby setter 方法返回的是字符串而不是符号作为最后计算的表达式?

python - 返回最小值的键

python - 在python中创建字典的字典