> 送给自己一句话:Python 不难,难的是坚持;编程不难,难的是动手,祝你早日学成 Python,实现自己的目标
*学习的脚步不要停歇,因为时代在进步我们更要进步,学到老活到老。希望能和大家共同成长,也希望有任何问题,大家评论、私信,一起交流进步
一个上进心极强的入门小白,虽然之前的文章总是更新着会断更,但是我相信这次我能把python这门语言能啃下来
如果超过两天断更了,更幸运的是你看到了这里,希望能够在最后一篇文章的评论区去催更,在这里感谢你的催更*
> 点赞评论催更是我更新的最大动力!这样是代表着我被人看到了。
---
# 创建字典
Python的字典(Dictionary)是一种可变的容器模型,可以存储任意类型的对象。
字典通过键值对(key-value)来存储数据,
字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值 key:value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中
键必须是不可变的类型,如字符串、数字或元组,而值可以是任意类型
**因为字典时无序的所以不支持索引和切片**
```python# -*- coding: utf-8 -*-'''@File : 2-数据类型.py@Author : HY @Version : 1.0@Desc : 创建字典'''my_dict = {"name":"张三","房间号":"302","住址":"北京市****","电话":"123456789"}print(type(my_dict))my_dict_1 = dict()print(type(my_dict_1))"""@OutPut : <class 'dict'><class 'dict'>"""```
字典的特点:
查找速度快:无论字典中有多少元素,查找速度都很快。
内存占用大:由于字典是通过哈希表实现的,所以需要占用较多的内存。
映射关系:每个 key 唯一对应一个 value(key 不可重复,value 可重复)。
key 约束:key 必须是「不可变类型」(如整数、字符串、元组、布尔值),不能是列表、字典等可变类型(会触发 TypeError)。
value 无约束:value 可以是任意 Python 类型(整数、字符串、列表、字典、函数等)。
无序性(Python 3.7 前):Python 3.7 之前字典是无序的,3.7+ 后保证插入顺序(但不依赖索引访问)。
动态性:字典创建后可随时增删改键值对,无需指定固定长度。
## 操作方法
1. clear():删除字典中的所有元素。
2. copy():返回字典的浅复制。
3. get(key, default=None):返回指定键的值,如果键不存在,则返回默认值。
4. items():返回字典中的所有键值对。
5. keys():返回字典中的所有键。
6. values():返回字典中的所有值。
7. pop(key, default=None):删除指定键并返回对应的值,如果键不存在,则返回默认值。
8. update(dict2):将字典 dict2 的键值对更新到当前字典中。
# 字典的增删改查
## 字典的增加
1. 字典[新的key] = 值
如果key在原字典中已经存在则为修改原key对应的值
```python# -*- coding: utf-8 -*-'''@File : 2-数据类型.py@Author : HY @Version : 1.0@Desc : 字典的添加'''my_dict = {"name": "张三", "房间号": "302", "住址": "北京市****", "电话": "123456789"}my_dict["性别"] = "男"print((my_dict))"""@OutPut : {'name': '张三', '房间号': '302', '住址': '北京市****', '电话': '123456789', '性别': '男'}"""```
## 字典的删除
1. del 查找到字典的键所对应的值进行删除
2. clear()清空字典所在数据空间中的多有键值对
3. pop:删除指定键所对应的键值对,会将删除的键值对所对应的值进行返回
4. popitem: 删除随机一个键值对,尝试后发现总是删除最后一个,会将删除的键值对以元组的形式进行返回
```python# -*- coding: utf-8 -*-"""@File : 2-数据类型.py@Author : HY @Version : 1.0@Desc : 字典的删除"""my_dict = {"name": "张三", "房间号": "302", "住址": "北京市****", "电话": "123456789"}my_dict["性别"] = "男"print(my_dict)key = my_dict.pop("电话")print(my_dict)print(key)ret = my_dict.popitem()print(type(ret))print(ret)ret = my_dict.popitem()print(type(ret))print(ret)"""@OutPut : {'name': '张三', '房间号': '302', '住址': '北京市****', '电话': '123456789', '性别': '男'}{'name': '张三', '房间号': '302', '住址': '北京市****', '性别': '男'}123456789<class 'tuple'>('性别', '男')<class 'tuple'>('住址', '北京市****')"""```
## 字典的修改
字典[key] = 值
字典中key必须存在
update:
update({键:值})
对应的键一定存在
```python# -*- coding: utf-8 -*-'''@File : 2-数据类型.py@Author : HY @Version : 1.0@Desc : 字典的修改'''my_dict = {"name": "张三", "房间号": "302", "住址": "北京市****", "电话": "123456789"}my_dict["性别"] = "男"print((my_dict))my_dict["性别"] = "女"print((my_dict))my_dict.update({"房间号":"999"})print((my_dict))"""@OutPut : {'name': '张三', '房间号': '302', '住址': '北京市****', '电话': '123456789', '性别': '男'}{'name': '张三', '房间号': '302', '住址': '北京市****', '电话': '123456789', '性别': '女'}{'name': '张三', '房间号': '999', '住址': '北京市****', '电话': '123456789', '性别': '女'}"""```
## 字典的查询
使用键查询值:字典[key]
查询的键不存在时则报错
get:字典.get(key)
查询的键不存在时,不报错,可以默认返回None,或者手动设置返回内容
keys:获取所有的键
values:获取所有的值
items:获取所有的键值对组成的元组·
### 正常查询
```python# -*- coding: utf-8 -*-"""@File : 2-数据类型.py@Author : HY @Version : 1.0@Desc : 字典的查询使用键查询值:字典[key] 查询的键不存在时则报错get:字典.get(key) 查询的键不存在时,不报错,可以默认返回None,或者手动设置返回内容keys:获取所有的键values:获取所有的值items:获取所有的键值对组成的元组·"""my_dict = {"name": "张三", "房间号": "302", "住址": "北京市****", "电话": "123456789"}if "name" in my_dict: ret = my_dict.get("name") print(type(ret)) print(ret)# get:字典.get(key)# 查询的键不存在时,不报错,可以默认返回None,或者手动设置返回内容if "na" in my_dict: print("na in my_dict")else: ret = my_dict.get("na") print(type(ret)) print(ret)# keys:获取所有的键ret = my_dict.keys()print(type(ret))print(ret)# values:获取所有的值ret = my_dict.values()print(type(ret))print(ret)# items:获取所有的键值对组成的元组·ret = my_dict.items()print(type(ret))print(ret)"""@OutPut : <class 'str'>张三<class 'NoneType'>None<class 'dict_keys'>dict_keys(['name', '房间号', '住址', '电话'])<class 'dict_values'>dict_values(['张三', '302', '北京市****', '123456789'])<class 'dict_items'>dict_items([('name', '张三'), ('房间号', '302'), ('住址', '北京市****'), ('电话', '123456789')])"""```
### 遍历查询
```python# -*- coding: utf-8 -*-'''@File : 2-数据类型.py@Author : HY @Version : 1.0@Desc : 遍历查询'''my_dict = {"name": "张三", "房间号": "302", "住址": "北京市****", "电话": "123456789"}for i in my_dict: print(i) print(type(i))for j in my_dict.items(): print(j) print(type(j))for i,j in my_dict.items(): print("key",i,"values",j)"""@OutPut : name<class 'str'>房间号<class 'str'>住址<class 'str'>电话<class 'str'>('name', '张三')<class 'tuple'>('房间号', '302')<class 'tuple'>('住址', '北京市****')<class 'tuple'>('电话', '123456789')<class 'tuple'>key name values 张三key 房间号 values 302key 住址 values 北京市****key 电话 values 123456789"""```
## 典型情况
```python# -*- coding: utf-8 -*-'''@File : 2-数据类型.py@Author : HY @Version : 1.0@Desc : 字典中的键具有唯一性,因为bool属于基础数据类型所以1==True因此1就会被True覆盖,所以输出为True的键值 '''my_dict = {0:"no",1:"yes",True:"ok"}print(len(my_dict), my_dict[0], my_dict[1], my_dict[True])my_dict = {0: "no", True: "ok", 1: "yes"}print(len(my_dict), my_dict[0], my_dict[1], my_dict[True])"""@OutPut : 2 no ok ok 2 no yes yes"""```