文章原创,最近更新:2018-09-03
在机器学习中会用字典的嵌套来存储决策树的信息,对绘制树形图有很大的作用,其中嵌套字典的生成是一个递归的过程.
构造嵌套字典的过程中,可以通过key来得到相应的value,而相应的value又可以是由字典构成的,再次利用key作为索引层级得到value。
案例1
x=[0,1,2,3,4]
y=[3,5,6,2,3]
#注意嵌套字典的定义方法
#result是一个字典的类型
result={}
for i in range(len(x)):
#result中的元素也是一个字典的形式
result[str(i)]={} #定义嵌套字典
for i in range(len(x)):
for j in range(5):
#嵌套字典的赋值方式
result[str(i)][str(j)]=abs(x[i]-y[j]) #计算曼哈顿距离
print(result)
#获取字典中指定位置的值
print(result['0']['1'])
print(result['0']['3'])
运行结果:
{'0': {'0': 3, '1': 5, '2': 6, '3': 2, '4': 3}, '1': {'0': 2, '1': 4, '2': 5, '3': 1, '4': 2}, '2': {'0': 1, '1': 3, '2': 4, '3': 0, '4': 1}, '3': {'0': 0, '1': 2, '2': 3, '3': 1, '4': 0}, '4': {'0': 1, '1': 1, '2': 2, '3': 2, '4': 1}}
5
2
案例2
s={'a':{0:'no',1:{'flippers':{0: 'no', 1: 'maybe'}}},'b':{}} # 构造字典
s["a"][0]
Out[234]: 'no'
s["a"][1]
Out[235]: {'flippers': {0: 'no', 1: 'maybe'}}
s["a"][1]['flippers'][0]
Out[236]: 'no'
s["a"][1]['flippers'][1]
Out[237]: 'maybe'
----------
# 嵌套构造过程
s={'no sur':{}}
s['no sur'][0]="no"
s
Out[240]: {'no sur': {0: 'no'}}
ss={'fli':{}}
ss['fli'][0]='no'
ss['fli'][1]='yes'
ss
Out[244]: {'fli': {0: 'no', 1: 'yes'}}
s['no sur'][1]=ss
s
Out[247]: {'no sur': {0: 'no', 1: {'fli': {0: 'no', 1: 'yes'}}}}