作者:小武兄来源:AI入门学习一、词典概述01词典格式Python词典是一个可变的容器模型,可以存储任意类型的对象,如字符串、数字、元组和其他容器模型。字典的每个键值key=>value对之间用冒号:隔开,每对之间用逗号隔开,整个字典用花括号{}括起来,格式如下:d={key1:value1,key2:value2}02创建字典的方法有很多种。以下方法创建的字典等于{"one":1,"two":2,"three":3}a=dict(one=1,two=2,three=3)b={'one':1,'二':2,'三':3}c=dict(zip(['一','二','三'],[1,2,3]))d=dict([('二',2),('一',1),('三',3)])e=dict({'三':3,'一':1,'二':2})f=dict({'one':1,'three':3},two=2)a==b==c==d==e==f03字典key的特点字典value可以取任意pythonobject没有限制,可以是标准对象,也可以是自定义对象,但是key不能,有特殊要求,需要记住两点:1)unique性能:同一个key不允许出现两次。如果同一个键在创建过程中被分配了两次,后面的值将被记住。2)不可变的:键必须是不可变的,所以可以作为数字、字符串或元组使用,所以不能作为列表、字典等使用。04学习文档官方文档:https://docs.python。org/zh-cn...2.字典的11种方法print(dir(dict))['clear','copy','fromkeys','get','items','keys','pop','popitem','setdefault','update','values']01fromkeys()描述:新建一个字典,使用序列seq中的元素作为字典键,value为中所有键对应的初始值词典。语法:dict.fromkeys(seq[,value])参数:seq一个序列,作为字典键值列表。value可选参数,设置按键序列(seq)的值。fromkeys是创建一个新字典。就是预先创建一个空字典和一个列表。fromkeys将接收两个参数。第一个参数是一个从外部传入的可迭代对象,该元素将作为字典的键值从循环中取出。另一个参数是字典的值。value,如果不写所有的key值,对应的value值为None,如果写了,会快速生成默认值的字典seq=('Google','Baidu','淘宝')dict.fromkeys(seq){'Google':None,'Baidu':None,'Taobao':None}dict.fromkeys(seq,1){'Google':1,'Baidu':1,'淘宝':1}dict.fromkeys(range(5),88){0:88,1:88,2:88,3:88,4:88s=[1,2,3]dict.fromkeys(seq,s){'google':[1,2,3],'百度':[1,2,3],'淘宝':[1,2,302clear()描述:清除字典中的所有元素,得到一个空的字典。返回值无语法:dict.clear()参数:NAdic={"python3":123}print(dic.clear())Nonedefmain():my_dict={'child':'mouse','ugly':'牛','寅':'虎','卯':'兔','臣':'龙','巳':'蛇','午':'马','卫':'羊','申':'猴','游':'鸡','虚':'狗','海':'猪'}print('zi'inmy_dict.keys())print('rat'inmy_dict.values())print('小五哥'inmy_dict.keys())print('小五哥'inmy_dict.values())print("字典长度:%d"%len(my_dict))指定的清空字典的用法my_dict.clear()print(my_dict)print("Dictionarylengthafterdeletion:%d"%len(my_dict))ifname=='__main__':main()运算结果TrueTrueFalseFalsedictionarylength:12{}删除后的字典长度:003copy()描述:返回字典的浅拷贝语法:dict.copy()参数:无dict1={'Name':'Xiaowuge','Age':17};dict2=dict1.copy()str(dict2)"{'姓名':'小乌歌','年龄':17}"dict_0={'姓名':'小乌歌','年龄':18,'proerty':'shuai'}dict_0{'name':'xiaowuge','age':18,'proerty':'shuai'}dict_1=dict_0.copy()dict_1{'name':'xiaowuge','age':18,'proerty':'shuai'}dict_0.update({'age':28})dict_0{'name':'xiaowuge','age':28,'proerty':'shuai'}dict_1{'姓名':'小吴哥','年龄':18,'proerty':'shuai'注:python字典的复制、浅复制和深复制的区别复制:和原字典完全一样浅复制:复制原字典,不复制子对象在原始字典中,所以当原始字典中的子对象发生变化时,浅拷贝后的字典也会发生变化。更改代码示例:importsysimportcopydefmain():d0={1:"a",2:"b",3:"c",4:[1,2,3]}d1=d0d2=d0。copy()d3=copy.deepcopy(d0)print("d0:",d0)print("d1:",d1)print("d2:",d2)print("d3:",d3)print(""10,"原字典d0改变后")d0[1]="aa"d0[4].append(4)print("d0:",id(d0),d0)print("d1:",id(d1),d1)print("d2:",id(d2),d2)print("d3:",id(d3),d3)ifname=="__main__":main()d0:{1:'a',2:'b',3:'c',4:[1,2,3]}d1:{1:'a',2:'b',3:'c',4:[1,2,3]}d2:{1:'a',2:'b',3:'c',4:[1,2,3]}d3:{1:'a',2:'b',3:'c',4:[1,2,3]}**原字典d改变后,d0:130346024{1:'aa',2:'b',3:'c',4:[1,2,3,4]}d1:130346024{1:'aa',2:'b',3:'c',4:[1,2,3,4]}d2:130345944{1:'a',2:'b',3:'c',4:[1,2,3,4]}d3:130346344{1:'a',2:'b',3:'c',4:[1,2,3可以看出随着d0变化,d1完全变化,d2'4:[1,2,3,4]'变化,d3没有变化如果有变化,可以看出深拷贝不受原字典变化的影响,其他情况都会受到影响。04get()描述:返回指定键的值,如果该值不在字典中,则返回默认值语法:dict.get(key,default=None)参数:key--要查找的键词典。default--如果指定键的值不存在,则返回默认值None。dic={"uiui":"ioio"}dic.get('uiui')'ioio'dic.get("uiuiui","我是第二个参数,参数一中的key在字典中不存在")'我是第二个参数,参数一中的key在字典中不存在'print(dic.get("uiuiui"))None05setdefault()说明:如果key在字典中不存在,则key为添加并将值设置为默认值。如果存在,则返回该字段的值,Python字典setdefault()函数和get()方法语法类似:dict.setdefault(key,default=None)参数:key--要查找的键值。default--键不存在时设置的默认键值。dict={'name':'Alice','age':23,'address':'杭州'}dict.setdefault('name')'Alice'print(dict){'name':'Alice','age':23,'address':'杭州'}身高键,看看有没有,没有就加上dict.setdefault('high',178)178dict{'name':'Alice','age':23,'address':'Hangzhou','high':17}06keys()描述:返回列表中字典的所有键。语法:dict.keys()参数:无dict={'name':'Alice','age':23,'address':'杭州'}dict.keys()dict_keys(['name','age','address'])list(dict.keys())转成list['name','age','address']07values()说明:返回字典中所有key对应的值语法:dict.values()参数:无dict={'name':'Alice','age':23,'address':'杭州'}dict.values()dict_values(['Alice',23,'杭州'])dict={'nick':'帅气小王子','item':'长袖短款','price':29.99,'prov':'杭州'}dict.values()dict_values(['帅气小王子','长袖短款',29.99,'杭州'])08items()描述:List返回一个可遍历的(key,value)元组数组。语法:dict.items()参数:无dict={'name':'Alice','age':23,'address':'杭州'}dict.items()dict_items([('name','Alice'),('age',23),('address','杭州')])最后的结果是一个dict_items对象。这个对象也是一个可迭代对象,可以用iter方法转换成迭代器,将字典的每个键值对转换成一个元组dic1=iter(dict.items())foriindic1:print(i)print(type(i))同时做一个引用循环dict={'name':'Alice','age':23,'address':'Hangzhou'}fori,vindict.items():print(i+':'+str(v))name:Aliceage:23address:Hangzhoumy_dict={'马云':'1000亿','马化腾':'900亿','王健林':'800亿'}fori,vinmy_dict.items():print(i+':'+v)马云:1000亿马化腾:900亿王健林:800亿09pop()描述:顾名思义,让item对应字典中某个键的“离开”字典。语法:pop(key[,default])参数:key:要删除的key值default:如果没有key,返回默认值接受两个参数,第一个参数为key,第二个参数可选,如果如果第一个参数中的键在字典中不存在,则返回第二个参数。如果没有传入第二个参数,则抛出keyerror。dict={'name':'Alice','age':23,'address':'杭州'}dict.pop('age')23print(dict){'name':'Alice','address':'杭州'}agegone10popitem()描述:随机删除字典中的一个键值对,并以元组的形式返回这个键值对,返回并删除字典中的最后一对键值对字典。语法:dict.popitem()参数:无注意:pop和popitem是字典中的删除操作。pop使用字典的“键”作为参数删除指定的键/值对。pop中的参数不能省略,删除字典中不存在的key/value对会报错。dict={'name':'Alice','age':23,'address':'杭州'}dict.popitem()('address','杭州')print(dict){'name':'Alice'','age':23}11update()描述:更新字典的键值对,将参数中字典中的键值对更新到字典中,该方法无返回值语法:dict.update(dict)参数:dict--要添加到指定字典dict的字典。第一种方式dict={'name':'Alice','age':23,'address':'杭州'}dict.update({'age':80})print(dict){'name':'Alice','age':80,'address':'杭州'}方法二dict.update(age=180)dict{'name':'Alice','age':180,'address':'杭州'}my_dict={'马云':'1000亿','马化腾':'900亿','王健林':'800亿'}my_dict.update(马化腾='1900亿')my_dict{'马云':'1000亿','马化腾':'1900亿','王健林':'800亿'}3.其他支持除了以上字典独有的11种方法外,还有这些操作支持bythedictionary(customizedmappingtypeshouldbesupported)01list(d)返回字典d中使用的所有键的列表。my_dict={'one':1,'two':2,'three':3}list(my_dict)['one','two','three']02len(d)返回列表中的项目数字典D.my_dict={'one':1,'two':2,'three':3}len(my_dict)303d[key]返回d中由key键入的项目。如果映射中不存在键,则引发KeyError。my_dict['one']104d[key]=value将d[key]设置为value。my_dict['one']=10my_dict{'one':10,'two':2,'three':3}05deld[key]从d中删除d[key]。如果映射中不存在键,则引发KeyError。my_dict={'one':1,'two':2,'three':3}delmy_dict['one']my_dict{'two':2,'three':3}06keyind如果key存在于d键返回True,否则返回False。my_dict={'one':1,'two':2,'three':3}'one'inmy_dictTrue07keynotind等同于notkeyind。my_dict={'one':1,'two':2,'three':3}'one'notinmy_dictFalse'XiaoWuge'notinmy_dictTrue08iter(d)返回一个迭代器,它的元素是字典的键。这是iter(d.keys())的快捷方式。my_dict={'one':1,'two':2,'three':3}iter(my_dict)
