1.字典定义
数据类型分为可变类型和不可变类型
类型 | 相关数据类型 | s是否哈希 |
---|---|---|
可变类型 | list 、dict 、set | 不可哈希 |
不可变类型 | str 、tuple(元组)、 bool 、int | 可哈希 |
字典(dict)是一种key value 无序的数据类型:
key 必须是不可变得数据类型 一般字符即可
value 可以任何种数据类型
2.字典相关操作
-
取值
#取值有dict['key']、dict.get("key"),dict.setdault('key')三中方法 dict={ 'name':'xiaojing', 'sex':'boy', 'hobby': ['girl', 'movie', 'cycling'], } print(dict['hobby'])# ['girl', 'movie', 'cycling'] print(dict['hobby'][0])#girl print(dict['name'])#xiaojing print(dict['name1'])#不存在该key会报错 name=dict.get("name1",'false')#默认找不到会返回None,可以修改返回值,此处改为false print(name) #false dict={ 'name':'xiaojing', } print(dict.setdefault('name','LaoWang')) #xiaojing print(dict.setdefault('name1','LaoWang')) #LaoWang print(dict) #{'name': 'xiaojing', 'name1': 'LaoWang'} #setdefault获取不存在的键值时会往字典添加改键
-
增加
#增加有直接键值对增加、dict.setdefault(key,value) dict={ 'name':'xiaojing', 'sex':'boy', 'email':'xx@qq.com' } dict['telephone']='15099818848' #没有该键则创建该键值对 dict['sex']='girl' #已存在该键值对则覆盖 print(dict)#{'name': 'xiaojing', 'sex': 'girl', 'email': 'xx@qq.com', 'telephone': '15099818848'} dict.setdefault('email','33@qq.com')#setdefault如果key已经存在则不修改该值 print(dict['email'])#xx@qq.com
-
删除
dict={ 'name':'xiaojing', 'sex':'boy', 'email':'xx@qq.com' } ret=dict.pop('sex1','false') if ret=='false': print('没有此键,返回值为:'+ret) else:print(ret) #pop(key,None) 删除成功则返回value,失败则返回None,None可以省略也可以修改,如上面改为'false'
-
更新
#更新cookie时用到 dict={ 'name':'xiaojing', 'sex':'boy' } dict1={ 'sex':'girl', 'email':'xx@qq.com' } dict.update(dict1) print(dict)#{'name': 'xiaojing', 'sex': 'girl', 'email': 'xx@qq.com'} #dict1.update(dict2)用dict2去更新dict1,存在相同key值时则更新value值,不存在key时则创建
-
查找
#dict.keys() dict.values() dict.items() dict={ 'name':'xiaojing', 'sex':'boy' } print(dict.keys())#dict_keys(['name', 'sex']) 返回列表对象 print(dict.values())#dict_values(['xiaojing', 'boy']) 返回列表对象 print(dict.items())#dict_items([('name', 'xiaojing'), ('sex', 'boy')]) 返回以元组为元素的列表对象 for key in dict.keys(): print(key)#name sex for key,value in dict.items(): print(key,value) #name xiaojing sex boy
-
字典嵌套
dict={ 'studentID':'201641402319', 'msg':{ 'name':'xiao jing', 'age':23, 'sex':'boy' } } name=dict.get('msg').get('name').title() #先找到内容,再进行操作 print(name)#Xiao Jing
-
分别赋值
a=1 b=2 a,b=b,a #一行代码同时交换a b的值 print(a,b)#2 1 a,b=['c','d'],['e','f'] print(a,b) #['c', 'd'] ['e', 'f'] a,b=(1,2) #分别赋值,自动识别右边最小元素,然后分别赋值 print(a,b)#1 2