Python基础5
-
为什么要有字典?
- 存储大量数据的容器型数据类型,虽然有列表,但数据与数据之间关联性不强,而且列表的查询速度较慢。
- 字典也是容器型数据类型,但他存储的数据之间有一定的关联性,并且字典查询速度很快。
-
数据类型的分类
- 可变的数据类型(不可哈希):list,set,dict
- 不可变的数据类型(可哈希):int、str、tuple、bool
-
字典:
- 字典是由{}括起来的键值对
- 字典的key只能是可哈希的数据类型,值可以是任意数据类型,对象。
- 字典在3.5x版本之前是无序的,3.6x会按照初次建立的顺序排列,3.7x之后都是有序的。
- 字典是由{}括起来的键值对
-
字典的优缺点:
- 优点:数据具有关联性,查询速度快
- 缺点:用空间换时间。
-
创建字典:
-
dic = dict((k1,v1)........)
dic = dict(("k1", "v1")) print(dic) 执行结果: {'k': '1', 'v': '1'} -
dic = dic({k1:v1,k2:v2.......})
dic = dict({'k1':'v1','k2':'v2'}) print(dic) 执行结果: {'k1': 'v1', 'k2': 'v2'} -
dic = dict(k1='v1',k2='v2'.......)
dic = dict(k1='v1', k2='v2') print(dic) 执行结果: {'k1': 'v1', 'k2': 'v2'}
-
-
字典的增删改查
-
字典的增
[1]dic[key]=value #有则改之,无则增加 eq: dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]} dic['k4'] = 'v4' dic['k1'] = 'alex' print(dic) 执行结果: {'k1': 'alex', 'k2': 'v2', 'k3': [11, 22, 33], 'k4': 'v4'} [2]dic.setdefault(key,default_value) #有则不变,无则增加 eq: dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]} dic.setdefault('k4', 'v4') dic.setdefault('k1', 'alex') print(dic) 执行结果: {'k1': 'v1', 'k2': 'v2', 'k3': [11, 22, 33], 'k4': 'v4'} -
字典的删除
[1]dic.pop(key,返回值) #pop()删除是有返回值的,默认返回删除的值,在指定了返回值的情况下,如果删除不存在的值,不会报错,会返回指定的值。 eq: dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]} print(dic.pop('k1')) print(dic) 执行结果: v1 {'k2': 'v2', 'k3': [11, 22, 33]} eq: dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]} print(dic.pop('k11', 100)) print(dic) 执行结果: 100 {'k1': 'v1', 'k2': 'v2', 'k3': [11, 22, 33]} [2]dic.clear() #清空列表 eq: dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]} dic.clear() print(dic) 执行结果: {} [3]del dic[key] eq: dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]} del dic['k1'] print(dic) 执行结果: {'k2': 'v2', 'k3': [11, 22, 33]} -
字典的改:
[1]dic[key]=value eq: dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]} dic['k1'] = 'alex' print(dic) 执行结果: {'k1': 'alex', 'k2': 'v2', 'k3': [11, 22, 33]} -
字典的查:
[1]dic.get(key,value) #按key获取值,如果key不存在,有指定值不会报错,否则会报错 eq: dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]} print(dic.get('k1')) print(dic.get('k11', '100')) 执行结果: v1 100 [2]dic[key] eq: dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]} print(dic['k1']) 执行结果: v1 -
字典的其他操作:
[1]keys() #获取字典的键 eq: dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]} print(dic.keys()) ---------- for i in dic.keys(): print(i) 执行结果: dict_keys(['k1', 'k2', 'k3']) k1 k2 k3 [2]values() #获取字典的值 eq: for i in dic.values(): print(i) 执行结果: v1 v2 [11, 22, 33] [3]items() #获取key,value的元组 eq: dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]} for i in dic.items(): print(i) ------------------ for k, v in dic.items(): print(k, v) 执行结果: ('k1', 'v1') ('k2', 'v2') ('k3', [11, 22, 33]) ------------------ k1 v1 k2 v2 k3 [11, 22, 33]
-
-
字典的嵌套
-
字典的嵌套同理列表嵌套
dic = { 'name':['alex',2,3,5], 'job':'teacher', 'oldboy':{'alex':['python1','python2',100]} } ------ dic.get('oldboy').get('alex')[0]='pp' print(dic) 执行结果: 'python1' ------- {'name': ['alex', 2, 3, 5], 'job': 'teacher', 'oldboy': {'alex': ['pp', 'python2', 100]}}
-
浙公网安备 33010602011771号