擅长:python、mysql、java
<p>一个简单的解决方案如下所示:</p>
<pre><code>d = { ... }
def flatten(dic, stack=None):
if not stack: stack = []
for key,value in dic.iteritems():
new_stack = stack[:] + [key]
if isinstance(value, dict):
for result in flatten(value, new_stack):
yield result
else:
yield new_stack, value
# just print it:
for stack, value in flatten(d):
print '{}: {}'.format('_'.join(stack), value)
# create a new dict:
new_d = {'_'.join(stack): value for stack, value in flatten(d)}
</code></pre>