继续我的旧问题: Writing nested dictionary (forest) of a huge depth to a text file
现在我想用BFS风格来写森林遍历: 我有一个巨大的深度字典,代表森林(许多非二叉树),我想处理森林并使用森林中的(父亲,儿子)关系序列创建一个文本文件,即给定字典:
{'a': {'b': {'c': {'x': {}}, 'd': {'p': {}}}, 'g': {}, 'f': {}},
't': {'r': {'o': {}}, 'y': {}}}
生成的文本文件将如下所示:
(ROOT,b) (ROOT,g) (ROOT,f) (b,c) (b,d) (c,x) (d,p) \n
(ROOT,r) (ROOT,y) (r,o) \n
请注意,我用“ROOT”一词替换了森林中的所有根。
嵌套字典很大,并且递归地迭代它会导致内存运行时错误,因此本问题开头的链接中的“生成器样式”解决方案将是最好的。
最佳答案
d = {'a': {'b': {'c': {'x': {}}, 'd': {'p': {}}}, 'g': {}, 'f': {}}, 't': {'r': {'o': {}}, 'y': {}}}
with open('file', 'w') as f:
for r, s in d.items():
q = []
p = r
while True:
for k, v in s.items():
f.write('(%s,%s) ' % ('ROOT' if p == r else p, k))
if v:
q.append((k, v))
if not q:
break
p, s = q.pop(0)
f.write('\n')
输出:
(ROOT,b) (ROOT,g) (ROOT,f) (b,c) (b,d) (c,x) (d,p)
(ROOT,r) (ROOT,y) (r,o)
关于python - 以 BFS 风格将深度的嵌套字典(森林)写入文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52060788/