#简单总结
'''
列表:[] list
元组:()tuple
字典:{} dic
集合:{} set
'''
#1、作用
#2、定义 :花括号内逗号分隔开多个Key:value,其中valu可以是任意类型
#但是key必须是不可变类型,且不能重复
# d={'k1':111,(1,2,3):222} #d=dict(...)
# print(d['k1'])
# print(d[(1,2,3)]) #输出:222
# # print(type(d))
# d=dict() #这里dict是一个功能,即字典
# print(d,type(d))
# d={} #默认定义出来的是空字典
# print(d,type(d))
# d=dict(x=1,y=2,z=3) #x是key,1是value
# print(d,type(d)) #{'x': 1, 'y': 2, 'z': 3} <class 'dict'>
#dict([('a',11),('b',222)]) #{'a':111,'b':222
#3、数据类型转换
info=[
['name','geon'],
('age',18),
['gender','male']
]
d={}
# for item in info:
# print(item)
# d[item[0]]=item[1] #key元素0,value是元素1
# print(d) #{'name': 'geon', 'age': 18, 'gender': 'male'}
# for k,v in info: #k,v=['name','egon']
# d[k]=v
# print(d)
# res=dict(info) #{'name': 'geon', 'age': 18, 'gender': 'male'}
# print(res) #一行代码搞定上述for循环的工作
#造字典的方式:快速初始化字典
keys=['name','age','gender'] #将l列表中的每个元素取出来当作字典的key
# d={}
# for k in keys:
# d[k]=None #{'name': None, 'age': None, 'gender': None}
# print(d)
#和上面原理一样,循环key,默认赋值None
# d={}.fromkeys(keys,None) #key:value
# print(d) #{'name': None, 'age': None, 'gender': None}
#4、内置方法
#优先掌握的操作
#1、按key存取值:可存可取
# d={'k1':1111}
# #key存在则修改对应的值,不存在则创建新值
# d['k1']=222
# print(d)
# d['k2']=333
# print(d) #{'k1': 222, 'k2': 333}
#2、长度len,统计的是key的个数,key不能重复
# d={'k1': 222, 'k2': 333,'k1':3333,'k1':444}
# print(len(d)) #2
# print(d) #{'k1': 444, 'k2': 333}
#
#
# #3、成员运算in 和 not in 根据key
# d={'k1': 222, 'k2': 333,'k1':3333,'k1':444}
# print('k1' in d)
#4、删除
#4.1 通用删除
# d={'k1':111,'k2':222}
# del d['k1']
# print(d) #{'k2': 222}
#4.2 pop删除 根据key删除元素,返回删除key对应得value值
# res=d.pop('k2')
# print(res) #222
#4.3 popitem删除 随机删,返回一个元组,元组里面是删除得key和value
# res=d.popitem()
# print(res) #('k2', 222),这代表删除了’k2'
#5、键keys() ,值values(),键值对items()
#pyton3中拿到的都是”老母鸡“
# d={'k1':111,'k2':222}
# print(d.items()) #dict_items([('k1', 111), ('k2', 222)])
# print(dict(d.items())) #再将元组转换成字典 {'k1': 111, 'k2': 222}
# print(d.keys()) #dict_keys(['k1', 'k2'])
# print(d.values()) #dict_values([111, 222])
#6、循环
# for k in d.keys():
# print(k)
# for k in d: #默认取出来Key
# print(k)
#
# for v in d.values():
# print(v)
#
# for item in d.items():
# print(item) #产生一个小元组,('k1', 111)
#
# for k,v in d.items():
# print(k,v)
'''
打印结果:
k1
k2
111
222
('k1', 111)
('k2', 222)
k1 111
k2 222
'''
# print(list(d.keys())) #['k1', 'k2']
# print(list(d.values())) #[111, 222]
# print(list(d.items())) #[('k1', 111), ('k2', 222)]
#需要掌握的内置方法
# d={'k1':111,'k2':222}
# 1.#情空字典
# print(d.clear())
#2、更新字典,追加到老字典中,一切以新字典为准
# dic={'k3':333,'k1':23333} #{'k1': 23333, 'k2': 222, 'k3': 333}
# d.update(dic)
# print(d)
#3.d.get(),根据key取值。容错性更好
# print(d['k1']) #key不存在报错
# print(d.get('k1'))
# print(d.get('k4')) #Key不存在不报错,返回None
# d.setdefault(),需求:判断一个字典存的信息全不全
#例如:判断名字在不在,如果在,则不用往里面加了,不在则添加进去
info={'name':'ronghwang','age':18,'sex':'male'}
# if 'hobby' in info:
# pass
# else:
# info.update({'hobby':'看书'})
# #info['hobby']='看书'
# print(info) #{'name': 'ronghwang', 'age': 18, 'sex': 'male', 'hobby': '看书'}
#和上面的代码一样的功能
info.setdefault('mode','happy')
print(info)
#返回字典中key对应的值
res=info.setdefault('mode','happy')
print(res) #happy