Python 使用后缀进行词典搜索
p/S:重复到目前为止提出的问题是关于前缀的(无论如何,谢谢你) 这个问题是关于后缀的 用字典Python 使用后缀进行词典搜索,python,algorithm,python-2.7,Python,Algorithm,Python 2.7,p/S:重复到目前为止提出的问题是关于前缀的(无论如何,谢谢你) 这个问题是关于后缀的 用字典 dic={"abcd":2, "bbcd":2, "abgg":2} 是否可以使用字符串的后缀搜索词典,即,如果给定“bcd”,它将返回两个条目 {"abcd":2, "bbcd":2} 一种可能的方式: dic1={} for k, v in dic.items(): if(k.endswith("bcd")): dic1[k]=v 有没有可能更有效地完成它?对于一个小
dic={"abcd":2, "bbcd":2, "abgg":2}
是否可以使用字符串的后缀搜索词典,即,如果给定“bcd”,它将返回两个条目
{"abcd":2, "bbcd":2}
一种可能的方式:
dic1={}
for k, v in dic.items():
if(k.endswith("bcd")):
dic1[k]=v
有没有可能更有效地完成它?对于一个小问题集,您可以通过简单的列表理解来完成:
suffixed = [v for k, v in dic.items() if k.endswith("bcd")]
但是,这意味着每次查询时都要对字典中的每个项进行子字符串检查。如果在大数据集上速度较慢,您可以制作第二个原始密钥字典作为加速。你必须做一次预考:
suffixes = dict ( [ (k[-3:], []) for k in dic1] )
for k in dic1:
suffixes[k[-3:]].append(dic1[k])
这将为您提供每个后缀的所有结果。您可以以相同的方式存储键而不是值,然后链接到查找
在任何情况下,字典键的哈希查找都非常便宜,因此最好使用所需的键(即后缀)将数据缓存在字典中,而不是在每个键上循环字符串 @simonzack这是关于后缀的,一个完全不同的问题如果你理解尝试,你就会理解如何存储后缀。只存储后缀而不是前缀。@simonzack我知道trie,有支持后缀的trie实现(库)吗?你不需要找到。只需在将字符串放入trie之前和之后反转字符串。@simonzack这是一个用于反转的附加操作。。。