1今日内容
- 字典的初识
- 字典的使用(增删改查)
- 字典的嵌套
2内容回顾
- 列表:容器型数据类型,可以承载大量的数据,有序的数据
- 增:
- append 追加
- insert 插入
- extend 迭代着追加
- 删
- pop 按照索引删除,有返回值,默认删除第一个
- remove 按照元素删除
- clear 清空
- del 按照索引 ,切片(步长)
- 改
- lis[0] = ‘’
- lis[:2] = ''
- lis[1:5:2] =''
- 查
- 索引,切片
- for
- 增:
- 元祖:只读列表,() 拆包
- range:可以看做控制范围的数字列表,但是它不是列表
3具体内容
字典的初识
why
- 列表可以存储大量的数据,数据之间的关联性不强
- 列表的查询速度慢
what
- 容器型数据类型:dict
how
数据类型的分类(可变与不可变)
- 可变(不可哈希)的数据类型 :list dict set
- 不可变(可哈希)的数据类型 :str int bool tuple
字典:{}括起来,以键值对形式存储的容器型数据类型:
dic = {'太白': {'name':'金星','age':18,'sex':'男'} '书籍': ['游戏改变世界','肠子的小小心思','娱乐至死','权力'] }
键必须是不可变的数据类型 : int str (bool,tuple)
优点:查询速度非常快,存储关联性的数据
缺点:以空间换时间
字典的创建方式
#方式一 dic = dict((('one',1),('two',2),('three',3))) print(dic)#{'one':1,'two':2,'three':3} #方式二 dic = dict(one=1,two=2,three=3) print(dic) #方式三 dic = dict({'one':1,'two':2,'three':3}) print(dic)
验证字典的合法性:
dic = {[1,2,3]:'alex',1:666} #键要不可变的数据类型 print(dic) dic = {1:'alex',1:'太白',2:'金星'} print(dic)
字典的增删改查
dic = {'name':'太白','age':18,'books':['稀缺','穷爸爸富爸爸','为什么学生不喜欢上学']} #增 2 #dic[] 直接增加,无则增加,有则改之 dic['age'] = 25 #改 print(dic) dic['sex'] = '男' #加 print(dic) #setdefault 有则不变,无则加之 dic.setdefauit('sex') #dic = {'name':'太白','age':18,'books':['稀缺','穷爸爸富爸爸','为什么学生不喜欢上学'],'sex':None} dic.setdefault('sex','男') dic.setdefault('age',25) #删 3 #pop # 按照键删除键值对,有返回值; # 设置一个没有的元素,报错 # 设置两个元素,即使字典中没有改键也不报错 dic.pop('name') ret = dic.pop('name') dic.pop('sex') dic.pop('sex':'没有此键') print(dic) #clear 清空列表 dic.clear() print(dic) #del 按照元素删除,字典中没有键会报错 del dic['name'] print(del) del dic['sex'] print(del) #改 dic['name'] = '金星' #查 2 print(dic['name']) print(dic['name1']) #get li = dic.get('name') print(li) li = dic.get('name1') li = dic.get('name1','没有此键') #可以设置返回值 print(li) #三个特殊 #keys() values() items() #keys() print(dic.keys()) #转化成列表 print(list(dic.keys())) for key in dic.keys(): print(key) for key in dic: print(key) #values() print(dic.values()) #转化列表 print(list(dic.values())) for value in dic.values(): print(value) #items() print(dic.items()) for key value in dic.items(): print(key,value) a,b = (12,13) print(a,b) a = 12 b = 13 a,b = b,a print(a,b)#13 12
练习
dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]} # 请在字典中添加一个键值对,"k4": "v4",输出添加后的字典 dic['k4'] = 'v4' dic.setdefault('k4','v4') print(dic) # 请在修改字典中 "k1" 对应的值为 "alex",输出修改后的字典 dic['k1'] = 'alex' print(dic) # 请在k3对应的值中追加一个元素 44,输出修改后的字典 dic['k3'].append(44) print(dic) # 请在k3对应的值的第 1 个位置插入个元素 18,输出修改后的字典 dic['k3'].insert(2,18) print(dic)
字典的嵌套
dic = { 'name': '汪峰', 'age': 48, 'wife': [{'name': '国际章', 'age': 38},], 'children': {'girl_first': '小苹果','girl_second': '小怡','girl_three': '顶顶'} } # 1. 获取汪峰的名字。 dic['name'] dic.get('name') # 2.获取这个字典:{'name':'国际章','age':38}。 dic['wife'][0] # 3. 获取汪峰妻子的名字。 dic['wife'][0]['name'] # 4. 获取汪峰的第三个孩子名字。 dic['childen']['girl_three']
4总结
- 字典:查询速度快,数据关联性强
- 键为不可变数据类型, (str,int,bool,tuple) 唯一
- 值为任意数据类型,对象
- 增删改查,三个特殊
- 字典的嵌套