python 使用pickle 序列化与反序列化树结构

【Python】使用pickle实现多叉树的序列化和读取
方法

pickle.dump()
pickle.load()

步骤

首先建立一个多叉树节点类

import pickle


class Node:

    def __init__(self, name,address):
        self.name = name
        self.address = address
        self.children = []

    def insert(self, childNode):
        self.children.append(childNode)
    def show(self, level):
        print('|--|'*level, self.name)
        for eachChild in self.children:
            eachChild.show(level+1)

建立一个多叉树,结构如下

在这里插入图片描述

代码如下:

A = Node('A')
B = Node('B')
C = Node('C')
D = Node('D')
E = Node('E')
F = Node('F')
G = Node('G')
H = Node('H')

A.insert(B)
A.insert(C)
A.insert(D)
B.insert(E)
B.insert(F)
F.insert(G)
F.insert(H)

实现多叉树的可视化
调用方法:

A.show(1)

结果如下:

|–| A
|–||–| B
|–||–||–| E
|–||–||–| F
|–||–||–||–| G
|–||–||–||–| H
|–||–| C
|–||–| D

采用pickle模块实现对多叉树的序列化

首先是序列化操作,建立一个文件直接传入一个A节点:

with open('hehe.txt', 'wb') as file:
    pickle.dump(A, file)

注意必须是二进制写入。

反序列化方法如下,同样是二进制,用一个变量去接收:

with open('hehe.txt', 'rb') as file:
    hehe = pickle.load(file)

把结果show一下:

hehe.show(1)

结果如下:

|–| A
|–||–| B
|–||–||–| E
|–||–||–| F
|–||–||–||–| G
|–||–||–||–| H
|–||–| C
|–||–| D

可以发现采用pickle模块可以直接将节点对象及其子节点一起序列化并存储,非常好用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值