内容大纲:
一、字典介绍
二、字典的增、删、改、查
三、字典的三种特殊方法
四、字典的嵌套
五、补充:分别赋值
一、字典介绍
字典是python的基本数据类型之一,可以存储大量的关系型数据,也是python中唯一的映射类数据类型。
数据类型的分类:
可变的(不可哈希的):list、dict、集合
不可变的(可哈希的):int、str、bool、tuple
字典是以键值对(key-value)的形式存在,dict = { key: value , key : value,.......}
其中,字典的key必须是不可变的数据类型,字典的value可以是任意的数据类型
例如:
dic = {'name_list': ['王双', 'alex', '孙飞', 'taibai'], 1: {'name': 'taibai', 'age': 18, 'sex': '男'}, (1, 2): [100, {'ip': '192.168.1.1', 'port': 3306}] }
二、字典的增、删、改、查
1、字典的增(两种方法)
(1)用key进行定位,用=进行重新赋值:字典中不存在这个key时,增加这个key到字典中,字典中本来就存在这个key时,就修改这个key对应的value。
dic = {'name':'helen','age':18,'sex':'women'} dic['name'] = 'amy' #字典中有这个key,会修改这个key对应的value print(dic) dic['habby'] = 'swimming' #字典中没有这个key,会增加这个key到字典中 print(dic) 输出结果: {'name': 'amy', 'age': 18, 'sex': 'women'} {'name': 'amy', 'age': 18, 'sex': 'women', 'habby': 'swimming'}
(2)setdefault(key,value):字典中不存在这个key时,增加这个key到字典中;字典中原本就存在这个key时,不进行任何操作。value可以省略,默认添加None。
dic = {'name':'helen','age':18,'sex':'women'} dic.setdefault('hobby','swiming') #增加到字典中 print(dic) 输出结果:{'name': 'helen', 'age': 18, 'sex': 'women', 'hobby': 'swiming'} dic = {'name':'helen','age':18,'sex':'women'} dic.setdefault('hobby') #增加到字典中,'hobby'对应的value值是None print(dic) 输出结果:{'name': 'helen', 'age': 18, 'sex': 'women', 'hobby': None} dic = {'name':'helen','age':18,'sex':'women'} dic.setdefault('name','amy') #不会修改原来的字典 print(dic) 输出结果:{'name': 'helen', 'age': 18, 'sex': 'women'}
2、字典的删(4种方法)
(1)pop(k,None):按照key进行删除键值对,返回值是被删除的key对应的value,可以设置第二参数,若没有设置第二参数,没有key时程序会报错。
ic = {'name':'helen','age':18,'sex':'women'} dic.pop('name') #按照key来删除name-helen print(dic) dic = {'name':'helen','age':18,'sex':'women'} print(dic.pop('name')) #返回被删除的key对应的value,结果是 helen dic = {'name':'helen','age':18,'sex':'women'} # dic.pop('hobby') #程序会报错 dic.pop('hobby','没有这个数') #程序不会报错 print(dic.pop('hobby','没有这个数')) #结果是:没有这个数
(2)clear():请空
(3)popitem():在python3.6之前,是随机删除一个键值对;从python3.6开始,删除最后一个键值对
(4)del:
① 按照键删除,del dic['name']
② 从内存上清空 del dic
3、改(两种方法)
(1)通过键和=进行修改,与增的用法相同
(2)update():
dic1.update(dic2):将dic2中的所有键值对覆盖并添加到dic1中(键相同的覆盖,键不同的添加)
例如:
dic1 = {'name':'helen','age':18,'sex':'women'} dic2 = {'name':'Amy','age':18,'bobby':'swimming'} dic1.update(dic2) print(dic1) 结果是: {'name': 'Amy', 'age': 18, 'sex': 'women', 'bobby': 'swimming'}
4、查(2种方法)
(1)通过键进行查询(与列表通过索引进行查询相似)
dic = {'name':'helen','age':18,'sex':'women'} str1 = dic['name'] #通过键查询到value print(str1) 结果是:helen
(2)get(k,None):字典种有这个key的返回这个key对应的value,没有的话返回第二参数,第二参数可以不写,默认返回None
dic = {'name':'helen','age':18,'sex':'women'} str1 = dic.get('name') print(str1) #有这个key,返回这个key对应的value值 str2 = dic.get('hobby') print(str2) #没有这个key,第二参数为空,返回None str3 = dic.get('hobby','没有这个键') print(str3) #没有这个key,有第二参数,返回第二参数
三、字典的三种特殊使用方法(.keys()/.values()/.items())
1、dic.keys()
① 用于提取字典种的key值,返回值的类型是 dict_keys
② 提取字典中的key值,并将其转化为列表 list(dic.keys())
③ 与for结合使用:输出的就是字典里的key(按原来的数据类型)
dic = {'name':'helen','age':18,'sex':'women'} print(dic.keys(),type(dic.keys())) #使用① li = list(dic.keys()) print(li) #使用② for i in dic.keys(): #使用③ print(i) 输出结果是: dict_keys(['name', 'age', 'sex']) <class 'dict_keys'> ['name', 'age', 'sex'] name age sex
2、dic.values()
① 用于提取字典种的value值,返回值的类型是 dict_values
② 提取字典中的value值,并将其转化为列表 list(dic.values())
③ 与for结合使用:输出的就是字典里的value(按原来的数据类型)
dic = {'name':'helen','age':18,'sex':'women'} print(dic.values(),type(dic.values())) #使用① li = list(dic.values()) print(li) #使用② for i in dic.values(): #使用③ print(i) 输出结果是: dict_values(['helen', 18, 'women']) <class 'dict_values'> ['helen', 18, 'women'] helen 18 women
3、dic.items()
① 用于提取字典种的key和value值,并将key和它对应的value用元组包围起来,返回值的类型是 dict_items
② 提取字典中的key和value值,并将其转化为列表 list(dic.items()),其中key和它对应的value用元组包围起来[(key,value),(key,value),.....]
③ 与for结合使用:输出的就是字典里的key和value(按原来的数据类型)
Ⅰ. for k,v in dic.items() :输出原始格式的key和value
Ⅱ. for i in dic.items() :输出被元组包围的key和value
Ⅲ. for i in dic() :输出原始格式的key
dic = {'name':'helen','age':18,'sex':'women'} print(dic.items(),type(dic.items())) #使用① #输出结果是:dict_items([('name', 'helen'), ('age', 18), ('sex', 'women')]) <class 'dict_items'> li = list(dic.items()) print(li) #使用② #输出结果是:[('name', 'helen'), ('age', 18), ('sex', 'women')] for k,v in dic.items(): print(k,v) #输出结果是: # name helen # age 18 # sex women for i in dic.items(): print(i) # 输出的结果是: # ('name', 'helen') # ('age', 18) # ('sex', 'women') for i in dic: print(i) # 输出结果是: # name # age # sex
四、字典的嵌套
dic = {'name_list': ['王双', 'alex', '孙飞', 'taibai'], 1: {'name': 'taibai', 'age': 18, 'sex': '男'}, (1,2): [100, {'ip': '192.168.1.1', 'port': 3306}] } # 1,给 name_list对应的列表追加一个值: 司徒大人. dic['name_list'].append('司徒大人') print(dic) # 2,将name_lsit对应的alex 变成全部大写. dic['name_list'][1]=dic['name_list'][1].upper() print(dic) # 3, 将1对应的字典添加一个键值对: weight : 75 dic[1]['weight'] = 75 print(dic) # 4,将1 对应的字典的name键对应的名字taibai 换成alex dic[1]['name'] = 'alex' print(dic) # 5,将 {'ip': '192.168.1.1', 'port': 3306} 次字典的port键值对删除. dic[(1,2)][1].pop('port') print(dic)
五、补充:分别赋值
a,b=10,20 # a=10,b=10 a,b=[10,20] # a=10,b=10 a,b=[(10,20),(30,40)] # a=(10,20),b=(30,40) a,b=b,a #a和b交换值