TypeError: str object is not an iterator
<p>I have a file consisting of words, one word on each line. The file looks like this:</p>

<pre><code>aaa
bob
fff
err
ddd
fff
err
</code></pre>

<p>I want to count the frequency of the pair of words which occur one after the other.</p>

<p>For example,</p>

<pre><code>aaa,bob: 1
bob,fff:1
fff,err:2
</code></pre>

<p>and so on.
 I have tried this</p>

<pre><code>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})
</code></pre>

<p>I got the error: </p>

<pre><code>TypeError: str object is not an iterator
</code></pre>

<p>I then tried using an iterator:</p>

<pre><code>it=iter(content)
for x in it:
    print x, next(x);
</code></pre>

<p>Got the same error again. 
Please help!</p>

<p>As others said, <strong>line</strong> is a string and thus cannot be used with the <strong>next()</strong> method. Also you can't use a list as a key for the dictionary because they are hashable. You can use a tuple instead.
A simple solution:</p>

<pre><code>f=open(file,'r')
content=f.readlines()
f.close()

dic={}

for i in range(len(content)-1):
    print(content[i], content[i+1])
    try:
        dic[(content[i], content[i+1])] += 1
    except KeyError:
        dic[(content[i], content[i+1])] = 1
</code></pre>

<p>Also notice that by using <strong>readlines()</strong> you also keep the '\n' of each line. You might want to strip it off first:</p>

<pre><code>    content = []
    with open(file,'r') as f:
        for line in f:
            content.append(line.strip('\n'))
</code></pre>

python dictionary iterator generator