【发布时间】:2016-09-12 21:32:36
【问题描述】:
我有一个由单词组成的文件,每行一个单词。该文件如下所示:
aaa
bob
fff
err
ddd
fff
err
我想统计一对单词一个接一个出现的频率。
例如,
aaa,bob: 1
bob,fff:1
fff,err:2
等等。 这个我试过了
f=open(file,'r')
content=f.readlines()
f.close()
dic={}
it=iter(content)
for line in content:
print line, next(line);
dic.update({[line,next(line)]: 1})
我得到了错误:
TypeError: str object is not an iterator
然后我尝试使用迭代器:
it=iter(content)
for x in it:
print x, next(x);
再次遇到同样的错误。 请帮忙!
【问题讨论】:
-
你认为
next(thing)是做什么的?这并不意味着“thing之后的事情”。 -
旁白:一种解决方案是:
pprint.pprint(collections.Counter(zip(content[0:],content[1:])).most_common()) -
@user2357112 :这就是我接下来的想法!接下来做什么? python 文档说:'通过调用其 next() 方法从迭代器中检索下一项。如果给出默认值,则在迭代器耗尽时返回,否则引发 StopIteration。
-
@rowana:你看到这个参数是如何被称为“迭代器”的了吗?它将迭代器作为参数,而不是从迭代器中检索的元素之一,并检索迭代器的下一项。 (这会推进迭代器的状态,因此该迭代器的下一次
next调用或for迭代将转到之后的项目。)我想下一个问题是,你认为迭代器是什么?line不是迭代器。 -
@user2357112,现在知道了!谢谢!
标签: python dictionary iterator generator