擅长:python、mysql、java
<p>你的问题是使用列表理解初始化字典。要分解它:</p>
<p>dict可以这样初始化</p>
<pre><code>dict = dict([(key0, value0), ...)]) # make a dictionary out of a list of tuples
</code></pre>
<p>本书中的列表理解由以下部分组成:</p>
<p>1。你知道吗</p>
<pre><code># "for every index i and corresponding entry s in sockets"
for i, s in enumerate(sockets)
</code></pre>
<p>2。你知道吗</p>
<pre><code># a tuple of the socket s and its index + 1: `i + 1`
(s, i + 1)
</code></pre>
<p>三。你知道吗</p>
<pre><code># "Make a list in which for every index i
# and corresponding entry s in sockets there is a tuple (s, i + 1)"
[(s, i + 1) for i, s in enumerate(sockets)]
</code></pre>
<p>因此:</p>
<pre><code># "Convert this whole thing into a dictionary!"
dict([(s, i + 1) for i, s in enumerate(sockets)])
</code></pre>
<p>等效代码为:</p>
<pre><code>sock2task = {}
for index, socket in enumerate(sockets):
sock2task[socket] = index + 1
</code></pre>
<p>输出的字典碰巧从3开始,因为字典没有排序。你知道吗</p>
<p>我希望现在更清楚了。你知道吗</p>