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)