擅长:python、mysql、java
<p><code>for k, v in d.iteritems()</code>分别是<code>key k</code>和{<cd3>},因此用<code>(v, k)</code>反转v和k使旧值成为键,旧键成为新值</p>
<pre><code>In [7]: d = {1:10,2:20}
In [8]: d.items()
Out[8]: dict_items([(1, 10), (2, 20)]) # tuples of key and value
In [1]: d = {1:10,2:20}
In [2]: for k,v in d.iteritems():
print k,v
...:
1 10 # 1 is the key 10 is the value
2 20
In [3]: new_d = {v:k for k,v in d.iteritems()} # swap key for value and value for key
In [4]: new_d
Out[4]: {10: 1, 20: 2}
</code></pre>
<p>您可能遇到的两个问题是重复的值或不可散列的值,因此它们不能用作列表、集合等键。。。在</p>
^{pr2}$
<p><code>dict([(v, k) for k, v in d.iteritems()])</code>将与<code>{v:k for k,v in d.iteritems()}</code>具有相同的输出,主要区别是前者还与python<;2.7兼容。在</p>
<p>如果您使用的是python<;2.7,则无需使用列表,您只需使用生成器表达式:</p>
<pre><code>dict((v, k) for k, v in d.iteritems())
</code></pre>