如何计算python中的两个单词序列

时间:2014-12-03 04:38:27

标签: python

我试图找到一种方法来计算使用python的单词列表中的两个单词序列。我将一个单词列表转换为两个单词列表。然后我想尝试计算所有相似的两个单词列表的频率。我尝试了计数器功能,但它给了我一个不可用的类型:'list'。我的代码示例如下所示:

s = ['one', 'two','three','four','five','six','one','two']

print s
print
p=[]
i=0
for i in range(0,len(s)/2):
    p.append(s[i*2:i*2+2])

print p
wordcounter = Counter(p)

我正在尝试输出,以便最顶出的两个单词显示在顶部,并显示它们旁边的出现次数。先感谢您。

3 个答案:

答案 0 :(得分:0)

要求 - "我正在尝试输出,以便最顶出的两个单词显示在顶部,旁边有出现的次数。"

您应该尝试Counter.most_common方法并告诉我们它是否适合您。

答案 1 :(得分:0)

计数器仅适用于可清洗物品。 p的项目是列表,因此它们不可清除。绕过它的一种方法是联合内部字符串列表,例如

wordcounter = collections.Counter(" ".join(v) for v in p)
print(wordcounter)
# gives
# Counter({'one two': 2, 'three four': 1, 'five six': 1})

答案 2 :(得分:0)

我认为我能做到这一点是一个很好的单线列表组合。结果证明它不太好:

newlist=[ii for n,ii in enumerate([[x,[lst[i:i+2] for i in range(0,len(lst),2)].count(x)] for x in [lst[i:i+2] for i in range(0,len(lst),2)]]) if ii not in [[x,[lst[i:i+2] for i in range(0,len(lst),2)].count(x)] for x in [lst[i:i+2] for i in range(0,len(lst),2)]][:n]]

请怜悯我的灵魂