擅长:python、mysql、java
<p>分配给字典中键的值本身可以是另一个字典</p>
<pre><code>creatures = dict()
creatures['birds'] = dict()
creatures['birds']['eagle'] = dict()
creatures['birds']['eagle']['female'] = 0
creatures['birds']['eagle']['female'] += 1
</code></pre>
<p>不过,您需要显式地创建每个字典。与Perl不同,Python在试图将未分配密钥的值视为字典时不会自动创建字典。</p>
<p>当然,除非您使用<code>defaultdict</code>:</p>
<pre><code>from collections import defaultdict
creatures = defaultdict( lambda: defaultdict(lambda: defaultdict( int )))
creatures['birds']['eagle']['female'] += 1
</code></pre>
<p>对于任意级别的嵌套,可以使用此递归定义</p>
<pre><code>dd = defaultdict( lambda: dd )
creatures = dd
creatures['birds']['eagle']['female'] = 0
</code></pre>
<p>在这种情况下,您确实需要显式初始化整数值,因为否则<code>creatures['birds']['eagle']['female']</code>的值将被假定为另一个<code>defaultdict</code>:</p>
<pre><code>>>> creatures = dd
>>> type(creatures['birds']['eagle']['female'])
<class 'collections.defaultdict'>
</code></pre>