当前位置:首页>python>python—数据类型02-复合数据类型_字典(dict)

python—数据类型02-复合数据类型_字典(dict)

  • 2026-09-02 20:24:29
python—数据类型02-复合数据类型_字典(dict)

> 送给自己一句话: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"""```

最新文章

随机文章