擅长:python、mysql、java
<p>您只需调用<code>dict</code>:</p>
<pre><code>>>> a
defaultdict(<type 'list'>, {'1': ['b', 'a'], '3': ['b'], '2': ['a']})
>>> dict(a)
{'1': ['b', 'a'], '3': ['b'], '2': ['a']}
</code></pre>
<p>但请记住,defaultdict<em>是一个dict:</p>
<pre><code>>>> isinstance(a, dict)
True
</code></pre>
<p>只是行为稍有不同,当您尝试访问丢失的密钥(通常会引发一个<code>KeyError</code>)时,会调用<code>default_factory</code>:</p>
<pre><code>>>> a.default_factory
<type 'list'>
</code></pre>
<p>这就是你在字典的数据端出现之前看到的。</p>
<p>因此,在不实际创建新对象的情况下恢复更多听写行为的另一个技巧是重置<code>default_factory</code>:</p>
<pre><code>>>> a.default_factory = None
>>> a[4].append(10)
Traceback (most recent call last):
File "<ipython-input-6-0721ca19bee1>", line 1, in <module>
a[4].append(10)
KeyError: 4
</code></pre>
<p>但大多数时候这不值得你费心。</p>