我需要在python中与pygtrie.PrefixSet类似的PrefixMap

问题描述

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或任何库中是否有这样的地图。

如果有一种有效的方法可以知道在contains运算符返回True时添加到PrefixSet中的原始前缀是什么,那也很好。

解决方法

研究了PrefixSet的实现,有一个Trie类可以解决问题

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','r','m'): 'VALUE')
In [49]: tr.shortest_prefix(term3)[1]
Out[49]: 'VALUE'