字典:是python中唯一一个映射的数据类型
1、字典是无序的
2、字典中的数据之间的关联性强。
dic={'name':'alix','age':16,'job':'teacher'} dic1={'py8期':['alix','ritian'],'py6期':['张三','李四','王二麻子']} print(dic) print(dic1['py8期'][0]) # {'name': 'alix', 'age': 16, 'job': 'teacher'} # alix
3、键值对。dic(键:值) 其中字典的键必须是可哈希的(即为不可变的数据类型:字符串,数字,布尔值,元组);不可哈希(即可变的数据类型:列表,字典,set)
dic={'name':'alix',[1,2,3]:'dhsh'} print(dic) # dic={'name':'alix',[1,2,3]:'dhsh'} #TypeError: unhashable type: 'list'
#由于dic中有键为列表形式,在输出dic时就会报错
4、键是唯一的。
dic={'name':'alix','age':16,'job':'teacher','name':'wusir'} print(dic) #{'name': 'wusir', 'age': 16, 'job': 'teacher'}
当有多个相同的键时,之后出现一次,且是随机输出的(虽然我的电脑重来就没有随机输出过)。
字典的增
1、直接加上字典的键,然后赋值添加到dic中。
dic={'name':'alix','age':39,'job':'teacher'} dic['weight']=85 print(dic) #{'name': 'alix', 'age': 39, 'job': 'teacher', 'weight': 85}
#此时是在dic中增加一个没有的键,就是直接增加
dic={'name':'alix','age':39,'job':'teacher'} dic['name']='jinxin' print(dic) #{'name': 'jinxin', 'age': 39, 'job': 'teacher'} #此时是在dic中增加一个本来就有的键值对,则原有的键值对的值就会被覆盖
2、使用setdefault()
dic={'name':'alix','age':39,'job':'teacher'} dic.setdefault('jin') print(dic) #{'name': 'alix', 'age': 39, 'job': 'teacher', 'jin': None} #此时在添加键值对时只输入了键,没有输入值,则输出时键值返回为None
dic={'name':'alix','age':39,'job':'teacher'} dic.setdefault('jin','没有返回值') print(dic) #{'name': 'alix', 'age': 39, 'job': 'teacher', 'jin': '没有返回值'}
dic={'name':'alix','age':39,'job':'teacher'} dic.setdefault('name','李四') print(dic) #{'name': 'alix', 'age': 39, 'job': 'teacher'} #添加的name在dic中本来就有,则不会对原dic进行改变。
字典的删
1、pop按照键去删,返回删除的值,如果没有就会报错dic.pop('hsjh')
dic={'数字':[1,2,3],'字符':['a','v','x']} print(dic.pop('数字')) print(dic.pop('jdhkjdh','没有不报错')) # [1, 2, 3] # 没有不报错 dic={'数字':[1,2,3],'字符':['a','v','x']} print(dic.pop('jhjksh')) # print(dic.pop('jhjksh')) # KeyError: 'jhjksh'
2、popitem()随机删除
dic={'name':'taibai','age':'67','job':'无'} dic.popitem() print(dic) #{'name': 'taibai', 'age': '67'}
3、del 删除
dic={'name':'taibai','age':'67','job':'无'} del dic['name'] print(dic) #{'age': '67', 'job': '无'}
如果键不存在的话就会报错
dic={'name':'taibai','age':'67','job':'无'} del dic['sex'] print(dic) # del dic['sex'] # KeyError: 'sex'
4、clear()清除字典:删除的是字典中的键值对,将字典变成空的。
dic={'name':'taibai','age':'67','job':'无'} dic.clear() print(dic) #{}
字典的改
1、直接将字典中的内容通过键找出了,然后改变值
dic={'name':'taibai','age':'67','job':'无'} dic['name']='jinxin' print(dic) #{'name': 'jinxin', 'age': '67', 'job': '无'}
2、update():对两个dic进行操作,如下例所示,是将dic1更新到dic中,在两个中都有name,在进行update()操作之后,dic1中name对应的值将dic中的name值覆盖,在dic中没有,但在dic1中有的键值对,都会自动添加到dic中。dic1不会发生改变。
dic={'name':'taibai','age':'67','job':'无'} dic1={'name':'tailiang','hobby':'女'} dic.update(dic1) print(dic) #{'name': 'tailiang', 'age': '67', 'job': '无', 'hobby': '女'}
字典的查
1、通过字典的键查找对应的值
dic={'name':'taibai','age':'67','job':'无'} print(dic['name']) #taibai
如果键值对不存在就会报错
dic={'name':'taibai','age':'67','job':'无'} print(dic['hskj']) # print(dic['hskj']) #KeyError: 'hskj'
2、get():当查找的键不存在时不会报错,但会返回None。也可以自己设置返回值。
dic={'name':'taibai','age':'67','job':'无'} print(dic.get('name')) print(dic.get('hdjhs')) print(dic.get('hsgd','不存在这个键')) # taibai # None #不存在这个键
3、只查找字典的key。且发现key的类型是dict_keys型。
dic={'name':'taibai','age':'67','job':'无'} print(dic.keys(),type(dic.keys())) #dict_keys(['name', 'age', 'job']) <class 'dict_keys'>
dic={'name':'taibai','age':'67','job':'无'} for key in dic.keys(): print(key) # name # age # job
4、只查找字典的value。且发现value的类型是dict_value型。
dic={'name':'taibai','age':'67','job':'无'} print(dic.values(),type(dic.values())) #dict_values(['taibai', '67', '无']) <class 'dict_values'>
dic={'name':'taibai','age':'67','job':'无'} for value in dic.values(): print(value) # taibai # 67 # 无
item():以key和value对应的形式输出字典中的键值对。
dic={'name':'taibai','age':'67','job':'无'} for key,value in dic.items(): print(key,value) # name taibai # age 67 # job 无
此时以元组的形式输出各键值对。
dic={'name':'taibai','age':'67','job':'无'} for i in dic.items(): print(i) # ('name', 'taibai') # ('age', '67') # ('job', '无')
分别接收
a,b=[1,2] print(a,b) #1 2 c,d=(3,4) print(c,d) #3 4
#交换a,b的值
a,b=(3,4) b,a=a,b print(a,b) #4 3
dic={'name':['alex',2,3,5],'job':'teacher'} dic['name'][0]=dic['name'][0].capitalize() print(dic) #{'name': ['Alex', 2, 3, 5], 'job': 'teacher'}