# dict 讲解及增删改查等操作
# 数据类型划分,可变数据类型,不可变数据类型
# 不可变数据类型:元祖 bool int str (又叫 可哈希)
# 可变数据类型: list(列表)、dict(字典)、set(集合)(又叫 不可哈希 )
# 字典dict key 必须是不可变数据类型,可哈希
# value 任意数据类型
# dict 优点:二分查找去查询
# 储存大量关系型数据
# 特点:无序的(Python3.5之前是,3.6以后是有序的)
# dic = {
# 'name':['风花雪月','百炼成钢'],
# 'py1':[{'num':71,'avg_age':18,}],
# True:1,
# (1,2,3):'m',
# 2:'凤凰',
# }
# print(dic)
# dic1 = {'age':18,'name':'elsa','sex':'male',}
# 增
# dic1['high'] = 185 # 添加新的键值对
# dic1['age'] = 16 # 修改原有键值对 覆盖原有
# print(dic1) # {'age': 16, 'name': 'elsa', 'sex': 'male', 'high': 185}
# dic1.setdefault('weight',100) # 如果没有该键值就添加
# print(dic1) # {'age': 18, 'name': 'elsa', 'sex': 'male', 'weight': 100}
# dic1.setdefault('name','alex') # 如果有该键值就不变了(setdefault与dic1['age'] = 16区别在于dic1['age'] = 16直接覆盖原键值,setdefault 有键值不做任何改变 没有才增加)
# print(dic1) # {'age': 18, 'name': 'elsa', 'sex': 'male'}
# 删 pop.()
# print(dic1.pop('age')) # 有返回值 按键来删除
# print(dic1)
# 18 # 这是返回的键值
# {'name': 'elsa', 'sex': 'male'} # 这是结果
# print(dic1.pop('呃呃呃',None) ) # 可设置返回值
# print(dic1)
# None # 这是返回的提示 表示没有此键值
# {'age': 18, 'name': 'elsa', 'sex': 'male'} # 这是结果
# dic1.clear() # 清空字典
# 改 update
# dic1['age'] = 16 # 修改原有键值对 覆盖原有
# dic1 = {'age':28,'name':'elsa','sex':'male',}
# dic2 = {'age':18, 'weight': 100,}
# dic2.update(dic1)
# print(dic1) # {'age': 28, 'name': 'elsa', 'sex': 'male'}
# print(dic2) # {'age': 28, 'weight': 100, 'name': 'elsa', 'sex': 'male'}
# 将dic1更新覆盖到dic2中,原dic1不改变
# 查
dic1 = {'age':28,'name':'elsa','sex':'male',}
# print(dic1.keys()) # dict_keys(['age', 'name', 'sex']) 键
# print(dic1.values()) # dict_values([28, 'elsa', 'male']) 值
# print(dic1.items()) # dict_items([('age', 28), ('name', 'elsa'), ('sex', 'male')]) 元祖 元祖里是键值
# for i in dic1:
# print(i) # 默认打印键 age name sex
# for i in dic1.values():
# print(i) # 打印 值 28 elsa male
# for i in dic1.items():
# print(i) # 打印 键值 ('age', 28) ('name', 'elsa') ('sex', 'male')
# a = 1
# b = 2
# a,b = b,a
# print(a,b) # a b a=2 b=1 数值互换
# for k,v in dic1.items():
# print(k,v)
# 打印 键值
# age 28
# name elsa
# sex male
# for k,v in dic1.items():
# for i in k,v:
# print(i)
# 打印 键值
# age
# 28
# name
# elsa
# sex
# male
# print(dic1.get('name','没有这个键'))
# 字典中如果有返回对应的值 如果没有相关的键 默认返回 None 也可以设置返回值 且不会报错