gpt4 book ai didi

python - 将深度很大的嵌套字典(森林)写入 BFS 样式的文本文件

转载 作者:太空宇宙 更新时间:2023-11-04 00:12:26 27 4
gpt4 key购买 nike

继续我的老问题: 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”一词替换了森林中的所有根。

这是森林的简单可视化: forest vosualization

嵌套字典很大,递归地迭代它会导致内存运行时错误,因此最好使用此问题开头链接中的“生成器样式”解决方案。

最佳答案

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com