擅长:python、mysql、java
<p>不要一次将整个文件读入内存,而是使用<code>for</code>循环逐行迭代,但<em>也</em>使用循环体中的<code>next</code>显式读取一行。这有效地让您一次迭代两行;我们假设文件中有偶数行,以避免显式地捕获<code>StopIteration</code>,但如果需要,可以很容易地添加</p>
<pre><code>d = {}
with open("ratings.txt") as f:
for name in f:
ratings = next(f)
d[name.strip()] = [int(x) for x in ratings.strip().split()]
</code></pre>
<p>请注意,您必须在正文中使用<code>next(f)</code>,而不是<code>f.readline()</code>,因为迭代器可能正在对从文件读取的数据进行自己的缓冲,并且您认为<code>f.readline()</code>将返回的行可能已经被迭代器读取,并且正在内存中等待将来对<code>next</code>的调用来返回它</p>