擅长:python、mysql、java
<pre><code>sock2task = dict([(s, i + 1) for i, s in enumerate(sockets)])
^
</code></pre>
<p>这是一个列表理解+元组解包,转换成dict</p>
<p>列表理解采用<code>[f(i) for i in iterable]</code>的形式。在本例中,<code>iterable</code>是<code>enumerate(sockets)</code>,它创建了一个由两个元素组成的元组。你知道吗</p>
<p>元组可以解包。ie <code>i,j = (0,1)</code>将<code>0</code>分配给<code>i</code>,将<code>1</code>分配给<code>j</code>。你知道吗</p>
<p>所以,基本上,<code>i</code>和<code>s</code>是在插入符号指向的地方创建的。你知道吗</p>
<p>(顺便说一下,在Python2.7+中,您还可以使用字典理解。<code>sock2task = { s: i + 1 for i,s in enumerate(sockets)}</code></p>