擅长:python、mysql、java
<p>最好使用递归来解决:</p>
<pre><code>def iter_leafs(d):
for key, val in d.items():
if isinstance(val, dict):
yield from iter_leafs(val)
else:
yield val
</code></pre>
<p>用法示例:</p>
^{pr2}$
<p>如果还希望跟踪关键点:</p>
<pre><code>def iter_leafs(d, keys=[]):
for key, val in d.items():
if isinstance(val, dict):
yield from iter_leafs(val, keys + [key])
else:
yield keys + [key], val
>>> list(iter_leafs(d))
[(['x', 'a', 'm'], 6), (['b', 'c', 'a'], 5), (['a', 'a', 'y'], 2)]
</code></pre>