微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

二叉树转换成字典,python的min-in混合类的使用

class ToDictMixin(object):
    def to_dict(self):
        return self._traverse_dict(self.__dict__)
    # 具体的实现代码写起来也很直观:我们只需要用hasattr函数动态地访问属性isinstance函数动态地检测对象类型,并用
    # dict_来访问实例内部的字典即可。
    
    def _traverse_dict(se1f, instance_dict):
        output = {}
        for key, value in instance_dict.items():
            output[key] = se1f._traverse(key, value)
        return output

    def _traverse(self, key, value):
        if isinstance(value, ToDictMixin):
            return value.to_dict()
        elif isinstance(value, dict):
            return self._traverse_dict(value)
        elif isinstance(value, list):
            return [self._traverse(key, i) for i in value]
        elif hasattr(value, '__dict__'):
            return self._traverse_dict(value.__dict__)
        else:
            return value


class BinaryTree(ToDictMixin):
    def __init__(self, value, left=None, right=None):
        self.value = value
        self.left = left
        self.right = right
    # 现在,我们可以把一大批互相关联的Python对象都轻松地转换成字典。


tree = BinaryTree(10, left=BinaryTree(7, right=BinaryTree(9)), right=BinaryTree(13, left=BinaryTree(11)))

print(tree.to_dict())

输出:

{
	'value': 10,
	'left': {
		'value': 7,
		'left': None,
		'right': {
			'value': 9,
			'left': None,
			'right': None
		}
	},
	'right': {
		'value': 13,
		'left': {
			'value': 11,
			'left': None,
			'right': None
		},
		'right': None
	}
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐