我需要匹配一个字符串,以查看它是否以大约40个字符串中的一个开头,并且这种方法被频繁调用。
目前它执行以下操作:
for pref, newval in list_of_prefixes:
if oldval.startswith(pref):
return newval
return oldval
然而,由于它被大量调用,尽可能高效是有意义的。我可以确保list_of_prefixes已排序,然后在pref>oldval时立即退出循环,但这似乎并没有带来太大的收益。
当前,最大数量的输入值在两个前缀之间,因此我可以明确测试这一点,或者按相反的顺序进行搜索,但尽管这对现在的数据集有效,但数据集发生变化时可能不那么有效。
最初只有1个可能的前缀,因此性能可能不是问题。
我查看了string.startswith(tuple()),但那似乎只是使编写更容易,并且它不告诉我匹配哪个元组,因此在有匹配时,我必须检查两次。