python 中字典{ }的嵌套

来源:互联网 发布:淘宝直通车分时折扣 编辑:程序博客网 时间:2024/06/05 08:41

在机器学习中会用字典的嵌套来存储决策树的信息,对绘制树形图有很大的作用,其中嵌套字典的生成是一个递归的过程
如下所示:

>>> s={'a':{0:'no',1:{'flippers':{0: 'no', 1: 'maybe'}}},'b':{}}  # 构造字典>>> s['a'][0]  # 取值'no'>>> s['a'][1]{'flippers': {0: 'no', 1: 'maybe'}}>>> s['a'][1]['flippers'][1]  'maybe'----------# 嵌套构造过程>>> s={'no sur':{}}   >>> s['no sur'][0]='no'>>> s{'no sur': {0: 'no'}}>>> ss={'fli':{}}>>> ss['fli'][0]='no'>>> ss['fli'][1]='yes'>>> s['no sur'][1]=ss # 其中ss是在递归中的最外层>>> s{'no sur': {0: 'no', 1: {'fli': {0: 'no', 1: 'yes'}}}}>>> 

在上面构造嵌套字典的过程中,可以通过key来得到相应的value,而相应的value又可以是由字典构成的,再次利用key作为索引层级得到value。

其次是嵌套构造的过程,可以看出ss虽然是一个嵌套的字典,但其是作为s的对应‘fli’的值的,而{‘fli’: {0: ‘no’, 1: ‘yes’}}整体作为1的值。在机器学习实战中的创建树的过程中,用到了递归创建的方法,其中:

这里写图片描述
这里写图片描述

标注的两行看了好久才明白,图中递归的效果就类似于上面的代码运行效果,只不过图中的代码等同于是把上面的ss写成s。

要想很清楚地理解递归,可以学习下数据结构中的调用栈,也就是栈的调用原理,然后就很清晰了。。。。

原创粉丝点击