# coding=UTF-8
'''
和list比较,dict有以下几个特点:
查找和插入的速度极快,不会随着key的增加而变慢;
需要占用大量的内存,内存浪费多。
而list相反:
查找和插入的时间随着元素的增加而增加;
占用空间小,浪费内存很少。
所以,dict是用空间来换取时间的一种方法。
dict可以用在需要高速查找的很多地方,在Python代码中几乎无处不在,正确使用dict非常重要,需要牢记的第一条就是dict的key必须是不可变对象。
'''
# 字典的每个键值(key=>value)对用冒号: 分割,每个对之间有,号隔开,用{}包围
# 键必须是唯一的,值可以不唯一
dict1 = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
# 访问字典中的值
print("dict['Name']:", dict1['Name'])
print("dict['Age']:", dict1['Age'])
# 修改字典: 像字典添加新内容的方法是增加新的键值对, 修改或删除已有键值对.
dict1['Age'] = 8 # 更新Age
dict1['Sex'] = 'male' # 添加信息
print(dict1['Age'])
print(dict1['Sex'])
# 删除字典元素
del dict1['Name'] # 删除键 'Name'
print(dict1)
# dict1.clear() # 清空字典
# print(dict1)
# del dict # 删除字典
# print(dict1)
# 字典键的特性
# 不允许同一个键出现两次.
# 判断key不存在的错误: 通过in来判断key是否存在
print('DDD' in dict1) #False
# 通过dict提供的get()方法,如果key不存在,可以返回None,或者自己制定的value:
dict1.get('Age') # 在命令行中不显示None
print(dict1)
dict1.pop('Age')
print(dict1)
字典内置函数 & 方法
# 函数
print(len(dict1)) # 2
# 输出字典,打印字符串表示
print(str(dict1)) # {'Sex': 'male', 'Class': 'First'}
# 返回变量类型
print(type(dict1)) # dict
listt = ['A', 'B', 'C']
print(listt)
print(type(listt))
# 方法
# clear() 清空字典 copy() 返回一个字典的浅复制
# key in dict 如果键在dict就返回True 否则就返回False
# items() 以列表返回可遍历的(键-值)数组
# keys() 以列表返回字典中所有的键
# update(dict2) 把字典dict2中的键/值更新到dict中
# values() 以列表返回字典中所有的值
dd = {'name' : 'zy', 'age' : 20, 'sex' : 'male'}
dict2 = {'namee' : 'cy', 'agee' : 22, 'sexx' : 'female'}
print(dd.items())
print(dd.keys())
print(dd.values())
# 将dict2 中的键值对更新到dd字典中
dd.update(dict2)
print(dd)
# 字典支持无限嵌套的
cities = {
'北京':{
'朝阳':['国贸','CBD','天阶','我爱我家','链接地产'],
'海淀':['圆明园','苏州街','中关村','北京大学'],
'昌平':['沙河','南口','小汤山',],
'怀柔':['桃花','梅花','大山'],
'密云':['密云A','密云B','密云C']
},
'河北':{
'石家庄':['石家庄A','石家庄B','石家庄C','石家庄D','石家庄E'],
'张家口':['张家口A','张家口B','张家口C'],
'承德':['承德A','承德B','承德C','承德D']
}
}
for i in cities['北京']:
print(i + '--')
for i in cities['北京']['怀柔']:
print(i)
Set
# set和dict类似,元素一组key的集合,但不存储value
# 创建一个set,需要提供一个list座位输入集合
set1 = set([1, 2, 3])
print(set1)
set1.add(4)
print(set1)
set1.remove(3)
print(set1)
# set可以看成无序和无重复元素的集合.
s1 = set([1, 2, 3])
s2 = set([2, 3, 4])
print(s1 & s2) # 取交集 [2, 3]
print(s1 | s2) # 取并集 [1, 2, 3, 4]