python学习-07字典
1字典的基本概念
字典{ }是Python中唯一映射性数据结构(由关键字和值组成):
1. 字典定义:{key1:value, key2:value},key在字典中是唯一的;
2. 字典是一种可变的容器模型,可以存储任意类型对象(元素可以是字典、列表、字符、数字等等);(可变意味着可以修改,增删改)
3. 字典在python3.6版本中是有序的数据结构;(即key是按照顺序排列的,比较的是hash值)
使用场景:对应关系
定义了一个字典
dict_m={key1:value1,key2:value2,key3:value3}
可以通过指定key来获取对应的值
dict_m[key1]


注意:必须是可以hash的对象才能做字典的key,否则是不可以做字典的key的,比如空列表[]
2字典访问方式
两种形式
1. 访问单个元素:d[key]
2. 遍历字典;for循环进行遍历

3字典修改
直接给对应关键字的值重新赋值即可
语法:d[key] = value

4字典相关函数
1、创建字典
①dict():创建空字典
②dict(mapping):创建字典

③二维列表,每个子列表元素必须是两个,[key,value],且key必须是可以hash的

④列表与元组组合,元组每个元素必须是两个

⑤列表与字符串组合,字符串长度必须是两个(只能拆解两个字符)-较少使用

注意:上述三种在dict()函数中,都是在[ ]内进行赋值的
⑥使用zip合并key和value,再构建字典

因为zip() 返回的是一个 “一次性迭代器(One-time Iterator)”,这里在上面已经把zip()的内容遍历完了,所以取到的是空

2、其他函数

len:是字典对象的个数
sum/max/min:均是对key进行的操作

in/not in:对key是否在字典中进行判别,只有判别字典中是否存在key,才会进行下一步操作


5字典相关方法
1、使用fromkeys生成字典
根据可迭代对象创造字典:
语法:dict.fromkeys(iterable, value=None, /)
主要参数:
1. iterable:迭代对象,每个元素可以hash【必须是不可变的】(可以是数字、元祖、字符串,但不可以是列表)
2. value:设置每个key的默认值,默认为None

2、获取字典的key和value

获取键,获取值,获取配对
D.key()不支持修改,如果想要对其进行处理,可以转化为list:list(D.key())

获取k和v的方法二是通过items()进行提取:


3、get方法【⭐】【字典的访问更推荐用get,不太推荐直接访问】
(直接取值,封装判别key是否存在,不用自己写判断)
dict.get(key, default=None):获取key对应值,若不存在返回default;

在取不在的key的值时的区别:
并且可以指定不存在时的返回值,不报错

4、setdefault方法(在字典中添加元素)
语法:dict.setdefault(self, key, default=None)
添加规则:若指定的key存在,则不添加值;若不存在,则添加指定的值
1. 如果key存在,返回key对应的值,不添加元素;
2. 如果key在字典中不存在,在字典中添加元素:{key:defatult}

5、字典的删除

①删除元素

②删除一组(默认从后向前删除,一组一组删除)

③清空

6、字典的更新
①方式一:直接添加(直接给指定key赋值)
1. 更新:D[k] = E[k]
2. 添加:D[k] = E[k]
(一样的)
②方式二:使用update方法【⭐】
语法:D.update([E, ]\*\*F)
更新或者添加多个元素, E为字典,F为可迭代对象(k,v)
【包含两步操作:
新字典中若有与原字典一样的key,则用新字典中key对应的值替换原字典中的值
新字典中较原字典多出来的元素则追加到原字典中,以完成更新】

6练习
练习一
给定一个字符串,统计每个字符出现次数
【列表作为迭代器,结合字典使用效率较高】

方法二思路梳理:
1、生成所有字母列表
2、以列表为迭代器初始化字典
3、利用字典统计字符串所有字符
4、删除字典中值为0的元素
练习二
删除字典中指定数据
给定员工信息,删除KPI评分小于6的所有用户信息

这里不支持对字典里的key直接调用删除,这是不允许的,但是key转换为列表则可以,练习一中就就是列表形式【注意】

注意
list[ ]:是找切片对象,在这里是将对象dict_keys([1001, 1002, 1005])作为了一个索引值,然后去list中找对应元素,因为list不支持用dict_keys对象做索引,所以虽然语法正确(不会报错),但是返回的是一个完全没有的值
list( ):小括号才是调用函数,用于传参,将dict_keys对象转换为列表
练习三
模拟用户注册登录


完成的比较简略



注意写复杂代码的习惯和逻辑,一个功能一个功能的写,并且一个功能一个功能的测试,然后再集合在一起
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)