【发布时间】:2023-09-03 05:11:01
【问题描述】:
我拿了一个单词列表并将其放入 trie 中。我还想在里面存储字数以供进一步分析。最好的方法是什么?这是我认为将收集和存储频率的课程,但我不知道如何去做。你可以看到我的尝试,插入的最后一行是我尝试存储计数的地方。
class TrieNode:
def __init__(self,k):
self.v = 0
self.k = k
self.children = {}
def all_words(self, prefix):
if self.end:
yield prefix
for letter, child in self.children.items():
yield from child.all_words(prefix + letter)
class Trie:
def __init__(self):
self.root = TrieNode()
def __init__(self):
self.root = TrieNode()
def insert(self, word):
curr = self.root
for letter in word:
node = curr.children.get(letter)
if not node:
node = TrieNode()
curr.children[letter] = node
curr.v += 1
def insert_many(self, words):
for word in words:
self.insert(word)
def all_words_beginning_with_prefix(self, prefix):
cur = self.root
for c in prefix:
cur = cur.children.get(c)
if cur is None:
return # No words with given prefix
yield from cur.all_words(prefix)
我想存储计数,以便在我使用时
print(list(trie.all_words_beginning_with_prefix('prefix')))
我会得到这样的结果:
[(word, count), (word, count)]
【问题讨论】:
-
您不应该在
for letter in word:循环结束时更新curr = node吗? -
@tobias_k 感谢您的评论!我对尝试很陌生,今天是我第一次使用它,所以我不知道。但我猜你是对的!
-
有具体的技术问题吗?请参阅help center、How to Ask。