gpt4 book ai didi

python - 在大量关键字列表中检查单词的最快方法 - Python 性能

转载 作者:太空狗 更新时间:2023-10-30 01:02:48 25 4
gpt4 key购买 nike

感谢您的快速响应。 Stackoverflow 太棒了!

我需要检查一个单词(或者成千上万个单词)是否匹配包含关键字的字典。

例如,假设我有一个字符串:"The fluffy fox jumped the friggin fence." 我需要根据关键字字典检查字符串中的每个单词,如果匹配,返回所有值。

我创建了一个字典 filters:(uniqueid 表示即“lk2m3lk4m2”,其余为“static”。)

filters:
{ "fox" : [
{ 'subscription' : 'uniqueid', 'link' : 'uniqueid' },
{ 'subscription' : 'uniqueid', 'link' : 'uniqueid' }
]},

{ "fence" : [
{ 'subscription' : 'uniqueid', 'link' : 'uniqueid' }
]}

...并计划为字符串中的每个单词迭代过滤器(我必须以每秒 5000 个单词的速度执行此操作。换句话说,性能是最重要的问题。

过滤器关键字的数量可能会增长到数千个,而字符串的长度永远不会超过一个正常的句子(即 5-20 个单词)。因此,我将遍历字符串中的每个单词并检查它是否包含在过滤器列表中。然而,以 500 句/秒的速度,我仍然需要进行大量计算。

例如,是否可以对列表进行排序(即列表中字典的键)从而显着提高性能?是否有我应该使用的 C 实现(比如我使用的 cjson 具有很好的性能增益)?

抱歉,这个问题不太流畅 - 但我应该如何完成这项任务?

编辑:

预期输入:
“毛茸茸的狐狸跳过了该死的栅栏。”
预期输出:
{ 'subscription' : 'flskdmfslk32232', 'link' : 'sfdksmfls22323' },
{ 'subscription' : '3023940fsdf', 'link' : 'sdflsfm223' }

(即每个匹配关键字下列出的订阅。)

最佳答案

您可以通过简单地执行 filters.has_key(word) 或执行以下操作来确定一个词是否是过滤器中的键:

subscriptions = filters.get(word)
if subscriptions is not None:
pass # TODO do something with subscriptions

或:

try:
subscriptions = filters[word]
# TODO do something with subscriptions
except:
pass # probably don't need to do anything if not present

不必遍历过滤器中的每个条目。相反,您需要拆分输入字符串,将每个单词添加到一个集合中(以消除重复项),然后遍历您的集合以在过滤器字典中查找每个单词。

关于python - 在大量关键字列表中检查单词的最快方法 - Python 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13350966/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com