一、字典
一、关键字:dict
1.字典是唯一的键值对数据,其表现形式: dic = {键:值},字典里的键必须保证是唯一的
2.键必须是不可变的数据类型:
a、故列表是不能当键的
b、所以元组(内部没有可变的数据类型)是可以当键的.
c、而字典也不可以当字典的键的,因为字典是可变的.
3.值是没有要求的.
dic = {'Key':1,1:'True',False:'asdf',{1,2,3}:[1,2,3,4]}
注:len()是一个python的内置函数,查询数据类型的长度的。什么数据类型都可以用.
4.不可变数据类型:(可哈希)
数字 字符串 元组 布尔值
5.可变数据类型:(不可哈希)
列表 字典
注:字典是无序的,但是py36是有序打印的,3.5及以下版本是无序打印.
二、增加:
1.dic[' '] = ' ' #很暴力,直接添加就好了.#如果这个键不在字典中就是添加,在字典中就是修改
#增加: dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]} dic['k4'] = 'v4' dic['k3'] = 'v3' dic.setdefault('k5') print(dic)
2.dic.setdefault(' 键',' 值') #如果在列表中键存在就不进行添加,不存在进行添加.如果不写值就默认值为None
dic = {} dic['歌手'] = '汪峰' print(dic) dic.setdefault('王菲','歌手') print(dic) dic.
三、删除:
注:字典中没有remove()方法 注意!!!!!!!!!!!!!!!!!
.pop(键) #删除这个键所对应的键值对,有返回值 #返回这个键所对应的值
.popitem() #随机删除,在3.6版本以上删除最后一个,3.5及以下版本随机删除有返回值 #返回的是这个键所对应的键值对,一元组的形式输出.第一个是键,第二个是值
del dic #删除整个字典
del dic['键'] #通过键删除一个键值对
.clear() #清空
注意(此处神坑):
#字典在for循环中是不能进行删除的,但是可以用方法规避在原字典使用for循环
dic = {'a':1,'b':2} dic1 = {} #通过建立一个新的字典 for i in dic: dic1[i] = dic[i] #规避for的循环机制 for i in dic1: dic.pop(i) print(dic)
四、改:
dic['键'] #如果这个键在字典中就是修改,不在就是添加
.update('键':'值') #更新 如果这个键在字典中就是修改,不在就是添加
五、查:
.get('键',返回值) #查询的是键所对应的值,如果没有该建,则默认返回None,返回值可以自己定义.
print(dic['键']) #也是查询键所对应的值,但是没有该键,则报错.
六、字典的其他操作:
dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]} for i in dic: print(i) #遍历的是字典的键 if i in dic: print(dic[i]) #没有返回值 print( dic.get(i)) #有返回值
七、字典独有的方法:
.keys() #对应字典的键 以元组的方式将键放在一个高仿列表里
.value() #对应字典的值 一元组方式将值放在一个高仿列表里
.items() #对应字典的键值对 以元组形式将键值对放在一个高仿列表里之所以叫高仿列表是因为无索引所以叫高仿
for k,v in dic.items(): #通过解构赋值 print('这是键',k) print('这是值',v)
八、解构赋值:
a,b = 1,2 即将ab分别赋值1和2 ,位置对应即可。
1.数字:
a,b = 1,2
print(a,b)
结果:
1 2
2.元组:
a,b = ('你好','汪峰') print(a,b)
结果:
你好 汪峰
3.列表:
a,b = ['你好','汪峰'] print(a,b)
结果:
你好 汪峰
4.字典:
a,b = {'汪峰':'男的','章子怡':'女的'} print(a,b)
结果:
汪峰 章子怡
例: 用一行代码将ab的值调换 a=10 b=20
利用解构赋值即可:
a,b = b, a print(a,b)
这个解构赋值适用于数字,字符串,列表,元组,字典等数据类型
八、字典的嵌套:
dic1 = { 'name':['alex',2,3,5], 'job':'teacher', 'oldboy':{'alex':['python1','python2',100]} } dic1['name'].append('wusir') print(dic1) s = dic1['name'][0].title() print(s) dic1['oldboy']['alex'].remove('python2') print(dic1)