擅长:python、mysql、java
<p>由于文件对象是iterable,您可以像现在一样迭代以获取键,然后从同一iterable中切片接下来的3次出现以获取值,例如:</p>
<pre><code>from itertools import islice
with open('file1') as fin:
stripped_lines = (line.strip() for line in fin)
f1dict = {key: list(islice(stripped_lines, 3)) for key in stripped_lines}
</code></pre>
<p>注意,<code>for line in fin</code>一次消耗一行,但是<code>list(islice(fin, 3))</code>然后消耗来自<code>fin</code>的3行,因此下一个<code>for</code>然后消耗之后的行,以此类推。。你知道吗</p>
<p>例如:</p>
<pre><code>>>> from itertools import islice
>>> r = range(20)
>>> i = iter(r)
>>> {key: list(islice(i, 3)) for key in i}
{0: [1, 2, 3], 8: [9, 10, 11], 4: [5, 6, 7], 12: [13, 14, 15], 16: [17, 18, 19]}
</code></pre>