使用Python中的文件通过动态嵌套字典构建图形

时间:2018-07-30 06:11:30

标签: python file dictionary tree

我使用以下代码构建了一个大嵌套字典,表示“森林”,这意味着树木的集合:

def create_forest(edges):
    """Given a list of edges [child, parent], return trees. """
    trees = collections.defaultdict(dict)
    for child, parent in edges:
        trees[parent][child] = trees[child]
    # Find roots
    children, parents = zip(*edges)
    roots = set(parents).difference(children)
    return {root: trees[root] for root in roots}

此作品通过返回字典来构建图形。我想以相同的方式(获取森林)构建相同类型的图,但是我想在磁盘中使用文件而不是将字典保留在内存中。 有什么方法可以在文件中而不是在字典中构建目录林?如果以后可以将文件的内容转储到字典中,那就太好了。

1 个答案:

答案 0 :(得分:0)

这取决于林中的所有值是否都可以json序列化,您可以使用json.loadjson.dump从文件加载结构并将其转储到文件,如下所示:

import json

forest = {
    "ancestro1": {
        "ancestor2":
            {
            "ancestror3": 123,
             "ancestor4":  654,
                "ancestor5": True}
    },
        "ancestor6":None
}


with open("file.json","w") as f:
    json.dump(forest,f)

with open("file.json","r") as f:
    forest = json.load(f)
print(forest)

输出:

{'ancestro1': {'ancestor2': {'ancestror3': 123, 'ancestor4': 654, 'ancestor5': True}}, 'ancestor6': None}

文件内容:

{"ancestro1": {"ancestor2": {"ancestror3": 123, "ancestor4": 654, "ancestor5": true}}, "ancestor6": null}