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对象转换为列表

练习三

模拟用户注册登录

完成的比较简略

注意写复杂代码的习惯和逻辑,一个功能一个功能的写,并且一个功能一个功能的测试,然后再集合在一起

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐