Python 如何在字符串列表中查找和排列所有前缀?

Python 如何在字符串列表中查找和排列所有前缀?,python,algorithm,data-structures,prefix,trie,Python,Algorithm,Data Structures,Prefix,Trie,我有一个字符串列表,我想找到流行的前缀。前缀的特殊之处在于它们作为字符串出现在输入列表中 我在这里发现了一个类似的问题,但答案旨在找到最常见的前缀: 虽然我的问题类似,但不同之处在于我需要找到所有流行的前缀。或者简单地说,将前缀从最常见到最少排列 作为一个例子,考虑下面的字符串列表: 在印度,印度,印度,印度国旗,公牛,恶霸,胡说八道 前缀排名: 在-4次 印度-3次 公牛-3次 等等请注意-在输入列表中,bull、india都有 以下前缀无效: ind 日分 布尔 …因为它们不出现在输入列表

我有一个字符串列表,我想找到流行的前缀。前缀的特殊之处在于它们作为字符串出现在输入列表中

我在这里发现了一个类似的问题,但答案旨在找到最常见的前缀:

虽然我的问题类似,但不同之处在于我需要找到所有流行的前缀。或者简单地说,将前缀从最常见到最少排列

作为一个例子,考虑下面的字符串列表: 在印度,印度,印度,印度国旗,公牛,恶霸,胡说八道

前缀排名: 在-4次 印度-3次 公牛-3次 等等请注意-在输入列表中,bull、india都有

以下前缀无效: ind 日分 布尔 …因为它们不出现在输入列表中

我应该考虑什么样的数据结构来为我的解决方案建模?我倾向于使用一个“trie”,每个节点上都有一个计数器,用于跟踪在创建trie期间该节点被触摸了多少次

欢迎所有建议。 谢谢

p、 我喜欢python,如果有人能发布一个能让我开始学习的简短片段,我会很高兴的

words = [ "in", "india", "indian", "indian", "flag", "bull", "bully", "bullshit"]

Result = sorted([ (sum([ w.startswith(prefix) for w in words ]) , prefix )  for prefix in words])[::-1]

它以前缀的形式遍历每个单词,检查有多少其他单词以前缀开头,然后对结果进行排序。如果我们知道前缀的长度,[::-1]简单地颠倒顺序

(比如3)


你试过什么吗?这实际上是你链接的问题的副本<代码>计数器实例。最常见的(10)将为您提供最常见的10个实例诚实地承认,它到目前为止只是纸面上的。没有任何代码显示。为下次做笔记。
from nltk import FreqDist
suffixDist=FreqDist()
for word in vocabulary:
    suffixDist[word[-3:]] +=1
commonSuffix=[suffix for (suffix,count) in suffixDist.most_common(150) ]
print(commonSuffix)