我写了一个映射器,它打印出单词对,每个单词对的计数为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
但它说没有足够的论据。分裂线,思想?非常感谢。
我认为问题出在(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))
将其删除。
免责声明:我没有测试代码。此外,这仅指您的第二个示例