day5 字典
01 今日内容大纲
-
字典的初识
-
字典的使用(增删改查)
-
字典的嵌套
02 内容回顾以及作业讲解
-
列表:容器型数据类型:可以承载大量的数据,有序的的数据。
-
增:
- append 追加(默认追加在最后)
- insert 插入 (索引位置插入)
- extend 迭代着追加 ()
-
删:
-
pop (索引删除)默认删除最后一个 ,同时可以设置返回值
-
remove (元素删除)多个元素相同时,默认删除第一个
-
del :
- 索引删除
- 切片,步长删除
-
-
clear:清楚内容
-
改:
- 索引 = new字符串
-
查
-
-
元组:只读列表 (), 元祖拆包
-
range : 看做可以 控制范围数字的列表 可迭代对象
03 具体内容
-
字典的初识
-
why:
-
列表可以存储大量的数据,数据之间的关联性不强
- ['太白',18,'男','大壮',3,'男']
-
列表的查询顺序相对比较慢
-
-
what:容器型数据类型:dict
-
how:
-
数据类型的分类(可变与不可变)
- 可变(不可哈希)的数据类性:list dict set
- 不可变(哈希)的数据类型:str bool int tuple
-
字典:{}括起来,以键值对形式储存的容器型数据类型
dict = {'太白': {'name':'太白之魔童降世','age':18,'sex':'男'}, 'python22期': {'太小白','太大白','小太白','小魔童'} }
-
键 key 必须是不可变的数据类型 str int ( bool tuple几乎不用)唯一的。
-
值 value 可以是任意数据类型 ,对象。
-
字典3.5版本之前(包括3.5) 是无序的
-
字典在3.6x 会按照初次建立字典的顺序排列,学术上不认为是有序的
-
字典在3.7x之后都是有序的
-
字典的查询速度非常快,存储关联性的数据
-
字典的缺点:以空间换时间。
-
-
字典的创建方式:
# 方式一 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 = {[123]:'alex',1:222} # 键要不可变的数据类型 # print(dic) # dict = {1:'alex',1:'wusir',2:'nvshen'} # 键需唯一 # print(dict)
-
字典的增删改查
- 增
# 通过键值对直接增加 dic = {'name': '太白', 'age': 18} dic['weight'] = 75 # 没有weight这个键,就增加键值对 print(dic) # {'name': '太白', 'age': 18, 'weight': 75} dic['name'] = 'barry' # 有name这个键,就成了字典的改值 print(dic) # {'name': 'barry', 'age': 18, 'weight': 75} # setdefault dic = {'name': '太白', 'age': 18} dic.setdefault('height',175) # 没有height此键,则添加 print(dic) # {'name': '太白', 'age': 18, 'height': 175} dic.setdefault('name','barry') # 有此键则不变 print(dic) # {'name': '太白', 'age': 18, 'height': 175} #它有返回值 dic = {'name': '太白', 'age': 18} ret = dic.setdefault('name') print(ret) # 太白
- 删
# pop 通过key删除字典的键值对,有返回值,可设置返回值。 dic = {'name': '太白', 'age': 18} # ret = dic.pop('name') # print(ret,dic) # 太白 {'age': 18} ret1 = dic.pop('n',None) print(ret1,dic) # None {'name': '太白', 'age': 18} #popitem 3.5版本之前,popitem为随机删除,3.6之后为删除最后一个,有返回值 dic = {'name': '太白', 'age': 18} ret = dic.popitem() print(ret,dic) # ('age', 18) {'name': '太白'} #clear 清空字典 dic = {'name': '太白', 'age': 18} dic.clear() print(dic) # {} # del # 通过键删除键值对 dic = {'name': '太白', 'age': 18} del dic['name'] print(dic) # {'age': 18} #删除整个字典 del dic
- 改
# 通过键值对直接改 dic = {'name': '太白', 'age': 18} dic['name'] = 'barry' print(dic) # {'name': 'barry', 'age': 18} # update dic = {'name': '太白', 'age': 18} dic.update(sex='男', height=175) print(dic) # {'name': '太白', 'age': 18, 'sex': '男', 'height': 175} dic = {'name': '太白', 'age': 18} dic.update([(1, 'a'),(2, 'b'),(3, 'c'),(4, 'd')]) print(dic) # {'name': '太白', 'age': 18, 1: 'a', 2: 'b', 3: 'c', 4: 'd'} dic1 = {"name":"jin","age":18,"sex":"male"} dic2 = {"name":"alex","weight":75} dic1.update(dic2) print(dic1) # {'name': 'alex', 'age': 18, 'sex': 'male', 'weight': 75} print(dic2) # {'name': 'alex', 'weight': 75}
- 查
# 通过键查询 # 直接dic[key](没有此键会报错) dic = {'name': '太白', 'age': 18} print(dic['name']) # 太白 # get dic = {'name': '太白', 'age': 18} v = dic.get('name') print(v) # '太白' v = dic.get('name1') print(v) # None v = dic.get('name2','没有此键') print(v) # 没有此键 keys() dic = {'name': '太白', 'age': 18} print(dic.keys()) # dict_keys(['name', 'age']) values() dic = {'name': '太白', 'age': 18} print(dic.values()) # dict_values(['太白', 18]) items() dic = {'name': '太白', 'age': 18} print(dic.items()) # dict_items([('name', '太白'), ('age', 18)])
-
04 今日总结
- 字典:查询速度快,数据关联性强
- 键不可变的数据类型(str int )唯一 元组和bool基本不见
- 值:任意数据类型,对象
- 增删改查******重点
- 字典的嵌套**重点
嗨~今天你暴躁了吗?
~~~关注我,更多精彩内容带给你,关注私聊带走绝密知识~~~