# -*- coding: utf-8 -*-
__author__ = 'Bao'
d1={'广东':{'广州':{'天河':"IFC",
'白云':'白云山',
'越秀':'越王古墓'}},
'海南':'三亚',
'湖南':'长沙'}
print(d1)
print(d1['广东'])
# print(d1['广西']) #如果不存在就会报错
d1['湖南']='衡阳' #存在主键时,修改值
d1['云南']='丽江' #不存在主键,则添加记录
print(d1)
del d1['海南'] #删除其中某元素
print(d1)
d1.clear() #清空字典
print(d1)
del d1 #删除字典
#copy() 浅复制
d2=d1.copy()
print(d2)
# radiansdict.fromkeys() 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
seq=('广东','海南', '湖南')
d3=dict.fromkeys(seq)
d4=dict.fromkeys(seq,'公园')
print(d3)
print(d4)
# radiansdict.get(key, default=None) 返回指定键的值,如果键不在字典中返回 default 设置的默认值
print(d4.get('广东'))
print(d4.get('四川')) #不存在,返回None
# radiansdict.keys() 返回一个迭代器,可以使用 list() 来转换为列表
l3=list(d3.keys())
print(l3)
# radiansdict.values() 返回一个迭代器,可以使用 list() 来转换为列表
l4=list(d4.values())
print(l4)
# radiansdict.update(dict2) 把字典dict2的键/值对更新到dict里
d3.update(d4)
print(d3)
print(d4)
# pop(key[,default]) 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
d4.pop('海南')
print(d4)
# popitem() 随机返回并删除字典中的最后一对键和值。
d4.popitem()
print(d4)
# radiansdict.setdefault(key, default=None) 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
d4.setdefault('三亚','海上公园')
print(d4)
# key in dict 如果键在字典dict里返回true,否则返回false
if '海南' in d1:
print('True')
else:
print('False')
if '四川' in d1:
print('True')
else:
print('False')
# radiansdict.items() 以列表返回可遍历的(键, 值) 元组数组
print(d1.items())
for i,j in d1.items():
print(i,'\t',j)
按层级输出
# -*- coding: utf-8 -*-
__author__ = 'Bao'
d1={'广东':{'广州':
{'天河':"IFC",
'越秀':'越王古墓',
'白云':'白云山'
}},
'海南':{'三亚':'亚龙湾',
'海口':'海滨公园'},
'湖南':'长沙'}
print(d1)
l1=list(d1.keys())
# print(l1)
for i in range(len(l1)):
v1=d1.get(l1[i])
if type(v1)== type(d1):
print(l1[i])
l2=list(v1.keys())
for i1 in range(len(l2)):
v2=v1.get(l2[i1])
if type(v2)==type(d1):
print('\t',l2[i1])
l3=list(v2.keys())
for i2 in range(len(l3)):
v3=v2.get(l3[i2])
if type(v3)==type(d1) :
print('\t'*2,l3[i2])
else:
print('\t'*2,l3[i2],v2.get(l3[i2]))
else:
print('\t',l2[i1],v1.get(l2[i1]))
else:
print(l1[i],d1.get(l1[i]))