被这个问题稍微难住了下,找到答案后不敢独享,希望能帮助其他朋友吧。

raw_data = [

("A1", "B1", "C1", 1),

("A1", "B1", "C1", 1),

("A1", "B1", "C2", 1),

("A1", "B2", "C1", 1),

("A1", "B2", "C1", 1),

("A1", "B2", "C2", 1),

("A1", "B2", "C2", 1),

("A2", "B1", "C1", 1),

("A2", "B1", "C1", 1),

("A2", "B1", "C2", 1),

("A2", "B1", "C2", 1),

("A2", "B2", "C1", 1),

("A2", "B2", "C1", 1),

("A2", "B2", "C2", 1),

("A2", "B2", "C2", 1)

]

那么我们可以使用以下代码生成树形图中所需的data数据

# Autovivification

# https://en.wikipedia.org/wiki/Autovivification

class Tree(dict):

def __missing__(self, key):

value = self[key] = type(self)()

return value

tree = Tree()

for x, y, z, value in raw_data:

tree[x][y][z] = value

def walk_tree(tree):

for k, v in tree.items():

if isinstance(v, dict):

value_list = list(walk_tree(v))

result = {

"name": k,

"children": [x for x in value_list],

"value": sum([x['value'] for x in value_list])

}

yield result

else:

yield {"name": k, "value": float(v)}

data = [x for x in walk_tree(tree)]

结果如下,其中父级数据值会自动汇总

[{'children': [{'children': [{'value': 1.0, 'name': 'C1'}, {'value': 1.0, 'name': 'C2'}], 'value': 2.0, 'name': 'B2'}, {'children': [{'value': 1.0, 'name': 'C1'}, {'value': 1.0, 'name': 'C2'}], 'value': 2.0, 'name': 'B1'}], 'value': 4.0, 'name': 'A1'}, {'children': [{'children': [{'value': 1.0, 'name': 'C1'}, {'value': 1.0, 'name': 'C2'}], 'value': 2.0, 'name': 'B2'}, {'children': [{'value': 1.0, 'name': 'C1'}, {'value': 1.0, 'name': 'C2'}], 'value': 2.0, 'name': 'B1'}], 'value': 4.0, 'name': 'A2'}]

有了data数据后,在拼一个echarts的option就不是难事了,代码就不贴了。

总结:Autovivification这个单词是解决问题的钥匙。

python生成树形图_如何使用Python生成树形图(treemap)所需数据相关推荐

  1. python从random生成列表_详解Python利用random生成一个列表内的随机数

    详解Python利用random生成一个列表内的随机数 首先,需要导入random模块: import random 随机取1-33之间的1个随机数,可能重复: random.choice(range ...

  2. python输出古诗词_使用LSTM训练生成古诗模型,其中生成器可以指定生成风格进行输出...

    RNNPoet项目 相关文章 项目介绍 文字预处理脚本介绍 梯度处理函数介绍 1.文件简介 LSTM_model.py:LSTM网络模型,提供了end_points接口,被其他部分调用 poetry_ ...

  3. python神经网络风格_[Deep-Learning-with-Python]使用LSTM生成尼采风格文章

    github地址repos LSTM生成文本 使用循环神经网络生成序列文本数据.循环神经网络可以用来生成音乐.图像作品.语音.对话系统对话等等. 如何生成序列数据? 深度学习中最常见的方法是训练一个网 ...

  4. python len函数_知识清单Python必备的69个函数,你掌握了吗?

    本文纲要 Python 作为一门高级编程语言,为我们提供了许多方便易用的内置函数,节省了不少开发应用的时间.目前,Python 3.7 共有 69 个内置函数,一些是我们耳熟能详的函数,另一些却不是很 ...

  5. python优化网站_[练习] 用PYTHON来优化网站中的图片

    我到公司以来,第一次加班,哇,加一晚上加一上午,现在还没下班的迹象,555,困. 对于网站中的一些关键的页面,多重缓存.静态化.程序代码优化--之外,为了提高用户打开页面的速度,图片是必须要优化的. ...

  6. python是什么编程教程-编程python是什么_谁的Python教程最好?

    谁的Python教程最好? 建议你可以看看这里的<Python基础教程>和<Python学习手册>应该适合你的. 希望对你有用. 记得采纳呀~ Python中的9个代码小实例! ...

  7. python框架大全_常用的Python开源框架有哪些?列举这3个

    随着人工智能快速发展,不仅在各个领域应用日益广泛,同时也引发了教学内容的变革和创新.人工智能的火热得益于成功的开源以及深度学习框架的不断涌现.而Python作为一种脚本语言,具有易学.易维护等优点,它 ...

  8. python 判断类型_青少年之Python编程课程安排lt;第一季gt;

    第一章    开启Python之旅 1.   你将了解什么是Python 2.   在电脑上安装并简单使用Python 3.   开始通过Python与计算机进行交流(编程) 第二章    变量 1. ...

  9. python编写函数_如何用Python编写自己喜欢的R函数

    python编写函数 数据科学和机器学习的伟大现代斗争之一是" Python vs. R". 毫无疑问,近年来两者都已经取得了巨大的发展,成为数据科学,预测分析和机器学习的顶级编程 ...

  10. python 生成器 原理_你知道python中的函数、生成器的工作原理吗?

    1.python中函数的工作原理 python的解释器,也就是python.exe(c编写)会用PyEval_EvalFramEx(c函数)运行foo()函数 首先会创建一个栈帧(stack Fram ...

最新文章

  1. 华为全球最快AI训练集群Atlas 900诞生
  2. LINUX PAM验证机制
  3. yarn 更新_YARN-HA配置
  4. HDU5773-The All-purpose Zero-多校#41010-最长上升子序列问题
  5. Opencv EmguCv 基本识别步骤
  6. 【CodeForces - 987C 】Three displays (dp,最长上升子序列类问题,三元组问题)
  7. Oracle中通过游标执行带参数的存储过程实现解析CLOB字段内的xml字符串:
  8. python游戏入门书籍推荐
  9. 全新液体镜头专利曝光:华为P50系列拍照对焦速度堪比人眼
  10. horizon服务主要模块_Openstack入门篇(十四)之horizon服务的部署与测试
  11. 开源 Android pdf 阅读器开发总结
  12. 单机 docker 部署fastfds_云服务器使用docker可视化一键部署Wrodpress个人博客,操作简单,适合小白...
  13. tensorflow学习之常用函数总结:tensorflow.cast()函数
  14. android space边框,Android中的图片视图的边框?
  15. Spring Cloud Zuul网关集成JWT身份验证学习总结
  16. 360浏览器网页无法连接服务器,360浏览器打不开网页的解决方法教程
  17. 两台计算机如何共享文档,两台电脑如何共享文件
  18. 红米k50电竞版和红米k40游戏增强版哪个好 参数对比
  19. python出错 unexpected keyword argument 'categories'
  20. 解决ubantu里面报错findfont: Font family ['sans-serif'] not found. Falling back to Bitstream Vera Sans

热门文章

  1. 第一本书《java面向对象总结》
  2. 有线电视光端机/射频光端机技术问答
  3. 气泡文字php,CSS3 巧妙实现聊天气泡
  4. oracle 数据库密码 特殊字符,【案例】Oracle用户密码含特殊字符$ 登录数据库时异常案例...
  5. MATLAB反幂法求矩阵最小特征值及其特征向量
  6. C++类成员函数转换成函数对象
  7. react和vue原理与比较
  8. 安卓专属刺激战场M416二、三指灵敏度,网友:配合6倍镜压枪简直太爽了
  9. Android 7.0 预览版发布了
  10. qt linux 修改系统时间,linux改变系统时间