python 05 字典
01今日内容大纲
- 字典初识
- 字典使用(增删改查)
- 字典的嵌套
02内容回顾
- 列表:容器型数据类型,可以承载大量的数据,有序的数据
- 增
- append 追加
- insert 插入
- extend 迭代追加
- 删:
- pop 按照索引删除,有返回值,默认删除最后一个
- remove 按照元素删除
- clear 清空
- del 索引,切片(步长)
- 改
- l1[1]
- l1[1:3]
- l1[1:4;2]
- 查:索引切片;for循环
- 增
- 元组:只读列表,()拆包 元组拆包 元组拆包 元组拆包
- range:看做:可以自己控制范围的数字列表,但是他不是列表
03 具体内容
-
字典的初识:
-
why:
- 列表可以存储大量的数据,数据之间的关联性不强
- 列表的查询速度比较慢
-
what:容器容数据类型:dict
-
how:
-
数据的分类(可变和不可变)
-
可变(不可哈希)的数据类型:list dict set(集合)
-
不可变(可哈希)的数据类型:str bool int tuple
-
字典:{}括起来,以 键值对 的形式存储的容器型数据类型
-
dic={'太白':
{'name':'太白金星','age':18,'sex':'男'},
'python22期':['大壮','小壮','hjb'],
}
-
-
键必须是不可变的数据类型,也就是可哈希:int,str(bool,tuple几乎不用)
-
值可以是任意数据类型,对象
-
字典3.5x版本之前是无序的
-
字典3.6x会按照初次建立字典的顺序排列,学术上不认为是有序的
-
字典3.7x以后都是有序的
-
字典的优点:查询速度快;关联性强
-
字典的缺点:以空间换时间
-
-
字典的创建方式:
- 方式一:dic=dict((('one',1),('two',2),('three',3)))
- 方式二:dic=dict('one'=1,'two'=2,'three'=3)
- 方式三:dic=dict({'one':1,'two':2,'three':3})
-
字典的增删改查
dic = {'name': '太白', 'age': 18, 'hobby_list': ['直男', '钢管', '开车']}
-
增:
- dic['sex']='男',如果key存在,则直接修改
- dic.setdefault('sex','男')
-
删:
-
pop 按照键删除键值对,有返回值*******
-
设置第二个参数则无论字典中有无此键都不会报错
-
dic.pop('age')
-
因为有返回值,所以还可以写成ret=dic.pop('age') print(ret)
-
ret=dic.pop('hobby','没有此键')
print(ret)
print(dic)
-
-
clear 清空
dic.clear()
print(dic)
-
del **
del dic('age')
-
-
改:
dic['name']='alex'
print(dic)
-
查:
-
l1=dic.get('hobby_list')
l2=dic.get('hobby_list','没有此键沙雕')
-
三个特殊的:
keys() values() items()
-
可以转化成列表
print(list(dic.keys()))
-
key
for key in dic.keys():
print(key)
for key in dic:
print(dic)
两个for循环输出的结果是一样的
-
value
dic={'one':1,'two':2,'three':3} print(dic.values()) #返回值:dict_values([1, 2, 3])
dic={'one':1,'two':2,'three':3} for value in dic.values(): print(value)
上边的valuefor循环中必须是 dic.values(),如果是for value in dic,则输出 one two three
-
item
for key,value in dic.items(): print(key,value)
感觉item多用于拆包
-
-
-
-
字典的嵌套
dic = { # 'name': '汪峰', # 'age': 48, # 'wife': [{'name': '国际章', 'age': 38},], # 'children': {'girl_first': '小苹果','girl_second': '小怡','girl_three': '顶顶'} # } # 1. 获取汪峰的名字。 # print(dic['name']) # 2.获取这个字典:{'name':'国际章','age':38}。 # print(dic['wife'][0]) # 3. 获取汪峰妻子的名字。 # print(dic['wife'][0]['name']) # 4. 获取汪峰的第三个孩子名字。 # print(dic['children']['girl_three'])
-
04 今日总结
- 字典:查询速度快,数据有关联性
- 键不可变的数据类型,(str int),唯一
- 值:任意数据类型,对象
- 增删改查(已经是阉割版,全部都要记住)***
- 字典的嵌套 ***
tomorrow
明天讲理论性偏多:id is == 小数据池,集合。