合并词对计数:python

1 投票
1 回答
1036 浏览
提问于 2025-04-28 00:57

我写了一个映射器,它会打印出单词对和每个单词对的计数,计数都是1。

import sys
from itertools import tee


for line in sys.stdin:
    line = line.strip()
    words = line.split()

def pairs(lst):
    return zip(lst,lst[1:]+[lst[0]])

for i in pairs(words):
    print i,1

我尝试写一个归约器来创建一个字典,但我有点卡在怎么把它们加起来这一步。

import sys

mydict = dict()
for line in sys.stdin:
    (word,cnt) = line.strip().split('\t') #\t
    mydict[word] = mydict.get(word,0)+1

for word,cnt in mydict.items():
    print word,cnt

但是它提示在.split那一行参数不够,你有什么想法吗?谢谢。

暂无标签

1 个回答

1

我觉得问题出在这行代码上:(word,cnt) = line.strip().split('\t') #\t
这里的split()方法会把字符串分割成一个列表,然后试图把这个列表的内容赋值给(word, cnt)。但是这样做不太行,因为列表里的元素数量可能不一样(有时候可能只有一个单词)。
你可能想用类似下面的代码:

for word in line.strip().split('\t'):
    mydict[word] = mydict.get(word, 0) + 1

如果你遇到空列表元素的问题,可以用list(filter(None, list_name))来把它们去掉。

注意:我没有测试这段代码。而且,这只是针对你的第二个例子。

撰写回答