我需要 python 中的 PrefixMap 类似于 pygtrie.PrefixSet
I need a PrefixMap in python that is similar to the pygtrie.PrefixSet
pygtrie.PrefixSet 是这样工作的:
ps = pygtrie.PrefixSet()
term = 'TERM'
ps.add(term)
term in ps
True
term + 'arbitrary postfix' in ps
True
我需要的是具有类似逻辑的地图。例如:
pm = PrefixMap()
pm[term] = 'Value'
pm[term + 'postfix']
'Value'
我不确定pygtrie或任何库中是否有这样的地图。
如果有一种有效的方法来判断当包含运算符 returns True 时添加到 PrefixSet 的原始前缀是什么,那也很好。
研究了 PrefixSet 的实现,有一个 Trie class 可以解决问题
In [32]: tr = pygtrie.Trie()
In [34]: term2
Out[34]: 'Some Term'
In [35]: term3 = term2+ 't'
In [36]: term3
Out[36]: 'Some Termt'
In [37]: tr[term2:] = 'VALUE'
In [48]: tr.shortest_prefix(term3)
Out[48]: (('S', 'o', 'm', 'e', ' ', 'T', 'e', 'r', 'm'): 'VALUE')
In [49]: tr.shortest_prefix(term3)[1]
Out[49]: 'VALUE'
pygtrie.PrefixSet 是这样工作的:
ps = pygtrie.PrefixSet()
term = 'TERM'
ps.add(term)
term in ps
True
term + 'arbitrary postfix' in ps
True
我需要的是具有类似逻辑的地图。例如:
pm = PrefixMap()
pm[term] = 'Value'
pm[term + 'postfix']
'Value'
我不确定pygtrie或任何库中是否有这样的地图。
如果有一种有效的方法来判断当包含运算符 returns True 时添加到 PrefixSet 的原始前缀是什么,那也很好。
研究了 PrefixSet 的实现,有一个 Trie class 可以解决问题
In [32]: tr = pygtrie.Trie()
In [34]: term2
Out[34]: 'Some Term'
In [35]: term3 = term2+ 't'
In [36]: term3
Out[36]: 'Some Termt'
In [37]: tr[term2:] = 'VALUE'
In [48]: tr.shortest_prefix(term3)
Out[48]: (('S', 'o', 'm', 'e', ' ', 'T', 'e', 'r', 'm'): 'VALUE')
In [49]: tr.shortest_prefix(term3)[1]
Out[49]: 'VALUE'