擅长:python、mysql、java
<p>在本例中,我发现在循环中使用<code>setdefault</code>(或<code>defaultdict</code>)比理解更具可读性。毕竟,“可读性很重要……”:</p>
<pre><code>mydictionary = {"OuterKey1": {"InnerKey1": "Value1", "InnerKey2": "Value2"}, "OuterKey2": {"InnerKey1": "Value3", "InnerKey2": "Value4"}}
d = {}
for k, v in mydictionary.items():
for ik, iv in v.items():
d.setdefault(ik, {})[k] = iv
# result:
# d == {'InnerKey2': {'OuterKey2': 'Value4', 'OuterKey1': 'Value2'}, 'InnerKey1': {'OuterKey2': 'Value3', 'OuterKey1': 'Value1'}}
</code></pre>
<p>同样使用<code>defaultdict</code>:</p>
<pre><code>from collections import defaultdict
d = defaultdict(dict)
for k, v in mydictionary.items():
for ik, iv in v.items():
d[ik][k] = iv
</code></pre>