列表的不足python
容器型数据类型:dict学习
数据类型的分类(可变与不可变):code
字典:{}括起来,以键值对形式存储的容器型数据类型。对象
dic = {'q':1,'w':2,"e":3,'r':4}
键必须是不可变的数据类型:int、str (bool,tuple几乎不用)three
值能够是任意数据类型,对象。get
字典3.5x版本之前(包括3.5)是无序的。it
字典3.6x会按照初次创建字典的顺序排列,学术上不认为是有序的。class
字典3.7x之后都是有序的。容器
字典的查询速度很是快。遍历
字典的缺点:以空间换时间。
# 方式一 dic = dict((('q',1),('w',2),('e',3))) # 方式二 dic = dict(one=1,two=2,three=3) # 方式三 dic = dict({'one':1,'two':2,'three':3}) #验证字典的合法性 dic = {key:value}
字典的增删改查(键值对,键要惟一)
增 两种方式互补
dic = {'name':'jarvis','age':18} #方式一(直接增长,有这个键就覆盖) dic['sex'] = '男' #方式二(有这个键不变,没有就增长) dic.setdefault('hobby','球类运动')
删
dic = {'name':'jarvis','age':18} #方式一(按照键删除键值对,有返回值) dic.pop('age') #返回的是值 ret = dic.pop('hobby','没有此键') #填入第二个参数时,有无第一个键值都不报错,返回第二个键值 print(ret) #方式二(清空) dic.clear() print(dic) #方式三(按照键删除键值对,没有此键会报错) del dic['age'] print(dic)
改
dic = {'name':'jarvis','age':18} dic['name'] = 'one' print(dic)
查
dic = {'name':'jarvis','age':18} #方式一(没有此键会报错,不推荐使用) print(dic['name']) #方式二(没有此键不会报错,能够设置返回值) ll = dic.get('name','没有此键') print(ll) #方式三(keys()values()items()) #能够转化成列表 print(list(dic.keys())) #遍历 for key in dic.keys(): print(key) #拆包 for key,value in dic.items(): print(key,value)
练习题
dic = { 'name':'jarvis', 'age':44, 'wife':[{'name':'jarviswife','age':38}], 'children':{'girl_first':'one','girl_second':'two','girl_three':'three'} } #1.获取jarvis的名字。 print(dic['name']) print(dic.get('name')) #2.获取这个字典:{'name':'jarviswife','age':38}。 print(dic['wife']) print(dic['wife'][0]) #3.获取jarvis妻子的名字。 print(dic['wife'][0]['name']) #4.获取jarvis的第三个孩子名字。 print(dic['children']['girl_three'])