python学习第五次笔记
列表的缺点
1.列表可以存储大量的数据类型,但是如果数据量大的话,他的查询速度比较慢。
2.列表只能按照顺序存储,数据与数据之间关联性不强
数据类型划分
数据类型:可变数据类型、不可变数据类型
不可变数据类型:元组,布尔值(bool)、int、str
可变数据类型:list(列表)、字典(dict)、set、
dict key 必须是不可变数据类型、可哈希
value:任意数据类型。
dict 优点:二分查找去查询
存储大量的关系型数据
特点:无序的
创建字典的几种方式
1 dic = dict((('one', 1),('two', 2),('three', 3))) 2 # dic = dict([('one', 1),('two', 2),('three', 3)]) 3 print(dic) # {'one': 1, 'two': 2, 'three': 3}
1 dic = dict(one=1,two=2,three=3) 2 print(dic) # {'one': 1, 'two': 2, 'three': 3}
1 dic = dict({'one': 1, 'two': 2, 'three': 3}) 2 print(dic) # {'one': 1, 'two': 2, 'three': 3}
字典的增加
通过键值对直接增加
1 dic1 = {'age': 18, 'name': 'xin', 'sex': 'male',} 2 dic1['high'] = 185 3 dic1['age'] = 16 4 # 没有键值对,添加 5 # 如果有键,则值覆盖 6 # {'age': 16, 'sex': 'male', 'high': 185, 'name': 'xin'} 7 print(dic1)
setdefault
1 dic1 = {'age': 18, 'name': 'xin', 'sex': 'male',} 2 dic1.setdefault('weight') # 有键值对,不做任何改变 ,没有才添加。 3 dic1.setdefault('weight', 150) 4 dic1.setdefault('name', 'erge') 5 print(dic1) 6 # {'name': 'xin', 'age': 18, 'weight': None, 'sex': 'male'}
字典的删除
pop 通过key删除字典的键值对,有返回值,可设置返回值。
1 dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',} 2 print(dic1.pop('age')) # 有返回值,按键去删除 3 print(dic1) 4 # {'sex': 'male', 'name': 'jin'} 5 6 print(dic1.pop('haha', '没有此键')) # 可设置返回值 7 # 没有haha这个键,如果不加上'没有此键'这个值,运行会报错 8 print(dic1) 9 # {'sex': 'male', 'name': 'jin'}
popitem 随机删除
1 dic1 = {'age': 18, 'name': 'haha', 'sex': 'male',} 2 s = dic1.popitem() 3 print(s, dic1) # 随机删除 有返回值 元组,删除的键值。 4 # ('sex', 'male') {'age': 18, 'name': 'haha'}
clear 清空字典
1 dic1 = {'age': 18, 'name': 'haha', 'sex': 'male',} 2 dic1.clear() # 清空字典 3 print(dic1) 4 # {}
del 通过键删除键值对
1 dic1 = {'age': 18, 'name': 'haha', 'sex': 'male',} 2 del dic1['name'] 3 print(dic1) 4 {'age': 18, 'sex': 'male'} 5 6 # 删除整个字典 7 del dic1
字典的修改
通过键值直接修改
1 dic1 = {'age': 18, 'name': 'haha', 'sex': 'male',} 2 dic1['age'] = 16 3 print(dic1) 4 # {'age': 16, 'name': 'haha', 'sex': 'male'}
update
1 dic = {'name': 'haha', 'age': 18, 'sex': 'male'} 2 dic.update(sex='男', height=175) 3 print(dic) 4 # {'name': 'haha', 'age': 18, 'height': 175, 'sex': '男'} 5 # 没有进行添加,有就进行修改 6 7 dic = {'name': 'haha', 'age': 18, 'sex': 'male'} 8 dic.update([('one', 1), ('two', 2), ('there', 3)]) 9 print(dic) 10 # 'two': 2, 'name': 'haha', 'sex': 'male', 'age': 18, 'one': 1, 'there': 3} 11 12 dic = {'name': 'haha', 'age': 18, 'sex': 'male'} 13 dic2 = {'name': 'heihei', 'weight': 75} 14 dic2.update(dic) 15 print(dic) 16 print(dic2) 17 # {'name': 'haha', 'age': 18, 'sex': 'male'} 18 # {'weight': 75, 'name': 'haha', 'age': 18, 'sex': 'male'}
字典的查看
通过键查询
1 # 直接dic[key](没有此键或报错) 2 dic = {'name': 'haha', 'age': 18} 3 print(dic['name']) # haha
get
1 dic = {'name': 'haha', 'age': 18} 2 v = dic.get('name') 3 print(v) # 'haha' 4 v = dic.get('name1') 5 print(v) # None 6 v = dic.get('name2', '没有此键') 7 print(v) # 没有此键
keys,values,items
1 # keys() 2 dic = {'name': 'haha', 'age': 18} 3 print(dic.keys()) # dict_keys(['age', 'name']) 4 5 # values() 6 dic = {'name': 'haha', 'age': 18} 7 print(dic.values()) # dict_values([18, 'haha']) 8 9 # items() 10 dic = {'name': 'haha', 'age': 18} 11 print(dic.items()) # dict_items([('age', 18), ('name', 'haha')])
其他操纵
1 dic1 = {'age': 18, 'name': 'haha', 'sex': 'male',} 2 for i in dic1: 3 print(i) 4 for i in dic1.keys(): 5 print(i) 6 # age 7 # sex 8 # name
1 dic1 = {'age': 18, 'name': 'haha', 'sex': 'male'} 2 for i in dic1.values(): 3 print(i) 4 # male 5 # haha 6 # 18
1 dic1 = {'age': 18, 'name': 'haha', 'sex': 'male'} 2 for i in dic1.items(): 3 print(i) 4 # ('age', 18) 5 # ('name', 'haha') 6 # ('sex', 'male') 7 8 for k, v in dic1.items(): 9 print(k, v) 10 # name haha 11 # age 18 12 # sex male
拆包
1 a, b = 1, 2 2 print(a, b) 3 # 1 2 4 5 a, b = (1, 2) 6 print(a, b) 7 # 1 2 8 9 a, b = ('你好', '世界') # 这个用专业名词就叫做元组的拆包 10 print(a, b) 11 # 你好 世界 12 13 a, b = [1, 2] 14 print(a, b) 15 # 1 2 16 17 a, b = [1, 2], [2, 3] 18 print(a, b) 19 # [1, 2] [2, 3] 20 21 a, b = {'one': 1, 'two': 2} 22 print(a, b) 23 # two one
字典的嵌套
1 dic = { 2 'name': ['haha', 'heihei', 'youyou'], 3 'py9': { 4 'time': '1213', 5 'learn_money': 19800, 6 'address': 'CBD', 7 }, 8 'age': 21 9 } 10 dic['age'] = 56 11 dic['name'].append('666') 12 print(dic['name']) 13 print(dic) 14 15 dic['name'][1] = dic['name'][1].upper() 16 print(dic) 17 18 l = [1, 2, 'wusir'] 19 l[2] = l[2].upper() 20 print(l) 21 22 # female : 6 23 dic['py9']['female'] = 6 24 print(dic)