一、字典
列表虽然可以存储大量的数据,但由于采用索引查找,查询的速度相对较慢;同时列表的存储的数据的关联性并不强。这时,我们就要引入字典。
字典是python里唯一的映射类的数据类型,用{}括起来,它以键值对的形式存储。每一对的键值对间用逗号隔开。如:
{'name': '太白金星', 'age': 18, 'sex': 'man'}
python的数据类型的分类可以分为:
容器非容器的划分:
容器类数据类型:list,tuple,dict,set
非容器类数据类型:int,str,bool
可变与不可变划分:
可变(不可哈希hash)的数据类型:list,dict,set
不可变(可哈希hash)的数据类型:int,bool,str,tuple
键值对里的键在字典里是唯一的不可重复的,键的数据类型必须是不可变的数据类型。值可以是任意的数据类型。字典可以做到存储大量的关联性的数据,而且可以快速查询。字典在python3.6之前是无序的,但从python3.6开始字典就变成有序的了,顺序为放入字典的先后顺序。
字典的常用的方法如下:
1、增
直接用“ dic[键] = 元素 ”的形式。如果列表里有这个键则将原来的元素替换,若没有就直接添加。代码如下:
dic = { 'name': '太白金星', 'age': 18, 'hobby': 'wife', } dic['hight'] = 176 print(dic)
还可以采用“ dic.setdefault(键,元素) ”的形式。如果列表里有这个键则不变,若没有就添加。代码如下:
dic = { 'name': '太白金星', 'age': 18, 'hobby': 'wife', } dic.setdefault('weight',160) print(dic)
2、删
用dic.pop(键)按照键来删除。pop指令有返回值,若是列表里没有这个键,默认情况下会报错,可以自定义返回值。代码如下:
dic = { 'name': '太白金星', 'age': 18, 'hobby': 'wife', } ret = dic.pop('age') ret = dic.pop('age1', '没有此键') print(ret) print(dic)
dic.clear()的方法可以将字典清空,代码如下:
dic = { 'name': '太白金星', 'age': 18, 'hobby': 'wife', } dic.clear() print(dic)
dic.popitem()在python3.6之前是随机删除,自python3.6变成删除最后一个键值对。代码如下:
dic = { 'name': '太白金星', 'age': 18, 'hobby': 'wife', } ret = dic.popitem() print(ret) print(dic)
del dic[键]可以按照键删除键值对,字典里没有这个键会报错,也可以用del dic将整个字典删除。代码如下:
dic = { 'name': '太白金星', 'age': 18, 'hobby': 'wife', } del dic['name'] print(dic) del dic print(dic)
3,、改
可采用“ dic[键] = 元素 ”的方法,代码见增的第一个方法。
可采用dic.update(键值对,键值对)或者dic2.update(字典),加入另一个字典时键相同的会覆盖入dic2里。代码如下:
dic = {"name": "jin", "age": 18, "sex": "male"} dic2 = {"name": "alex", "weight": 75} dic.update(car='逍客', money=1300) dic2.update(dic) print(dic) print(dic2)
4、查
可用dic[键]的方法查询,但若字典里没有此键会报错,不推荐。代码如下:
dic = { 'name': '太白金星', 'age': 18, 'hobby': 'wife', } print(dic['age'])
可用dic.get(键)的方法查询,字典里没有该键会返回None,也可以自定义返回值。代码如下:
dic = { 'name': '太白金星', 'age': 18, 'hobby': 'wife', } print(dic.get('age')) print(dic.get('age1', '没有此键'))
可以用for循环遍历。代码如下:
dic = { 'name': '太白金星', 'age': 18, 'hobby': 'wife', } for i in dic: print(i)
5、其他用法:
dic.keys()可以将字典里的键取出来,并且可以将其转化为列表。代码如下:
dic = { 'name': '太白金星', 'age': 18, 'hobby': 'wife', } ret = dic.keys() print(ret, type(ret))
dic.values()可以将字典里的值取出来,并且可以将其转化为列表。代码如下:
dic = { 'name': '太白金星', 'age': 18, 'hobby': 'wife', } print(dic.values()) print(list(dic.values()))
dic.items()可以将字典里的键值对取出来,并且可以将其转化为列表。代码如下:
dic = { 'name': '太白金星', 'age': 18, 'hobby': 'wife', } print(dic.items()) print(list(dic.items()))
二、字典的嵌套
dic[一级键][二级键]...[n级键] = 元素,目标元素在几级字典就要输到几级键。代码如下:
dic = { 'name_list': ['博哥', '菊哥', 'b哥', 'alex'], 'barry': { 'name': '太白金星', 'age': 18, 'hobby': 'wife', } } # 1,给这个列表['博哥', '菊哥', 'b哥', 'alex'] 追加一个元素 '老男孩'。 l1 = dic['name_list'] print(l1) l1.append('老男孩') print(dic) # 简写; dic['name_list'].append('老男孩') print(dic) # 2,将这个列表['博哥', '菊哥', 'b哥', 'alex']中的alex变成首字母大写。 print(dic['name_list'][-1].capitalize()) dic['name_list'][-1] = dic['name_list'][-1].capitalize() print(dic) # 3,将这个键值对 'name': '太白金星' 的 '太白金星' 改成男神。 先通过dic 找到小字典 print(dic['barry']) 在通过小字典将name 对应的值更改 dic['barry']['name'] = '男神' print(dic) # 4,给barry对应的小字典增加一个键值对: weight: 160 dic['barry']['weight'] = 150 print(dic)