当前位置: 首页 > news >正文

python---字典(dict)

文章目录

  • 1. 字典的基本特性
  • 2. 创建字典
  • 3. 字典操作
    • 访问元素
    • 添加/修改元素
    • 删除元素
  • 4. 常用方法
    • pop和popitem的区别
      • pop(key[, default])
      • popitem()
      • 主要区别总结
    • setdefault方法
      • setdefalut与get的区别
  • 5. 字典推导式
  • 6. 查找键值是否存在
    • 1. 使用 in 关键字(推荐)
    • 2. 使用 get() 方法
    • 3. 使用 keys() 方法
    • 4. 使用 try-except 块
    • 性能比较
  • 7. 特殊字典类型
  • 8. 注意事项
  • 9. 应用场景

字典(dict)是 Python 中最重要、最常用的内置数据结构之一,用于存储 键值对(key-value pairs) 数据。

1. 字典的基本特性

1、无序集合(Python 3.7+ 后按插入顺序保存)

2、可变(可动态增删改)

3、键必须唯一且不可变(如字符串、数字、元组)

4、值可以是任意类型(包括其他字典)

2. 创建字典

# 方式1:花括号
d1 = {'name': 'Alice', 'age': 25}# 方式2:dict()构造函数
d2 = dict(name='Bob', age=30)# 方式3:键值对列表
d3 = dict([('name', 'Charlie'), ('age', 35)])# 空字典
empty_dict = {}

3. 字典操作

访问元素

person = {'name': 'Alice', 'age': 25}# 获取值
print(person['name'])  # 'Alice'# 使用get()方法(避免KeyError)
print(person.get('age'))     # 25
print(person.get('height'))  # None
print(person.get('height', 170))  # 默认值170

添加/修改元素

person['age'] = 26      # 修改
# city是原本没有的键
person['city'] = 'NY'   # 新增

删除元素

del person['city']      # 删除键值对
age = person.pop('age') # 删除并返回值
person.clear()          # 清空字典

4. 常用方法

方法描述
keys()返回所有键
values()返回所有值
items()返回所有键值对
update()合并字典
setdefault()安全获取/设置值
popitem()移除最后插入的项
person = {'name': 'Alice', 'age': 25}# 遍历
for key in person: ...
for value in person.values(): ...
for key, value in person.items(): ...# 合并字典
extra_info = {'city': 'NY', 'job': 'Engineer'}
person.update(extra_info)

pop和popitem的区别

这两个方法都用于从字典中移除并返回元素,但有重要区别:

pop(key[, default])

1、移除指定键的元素并返回其值

2、必须指定要移除的键,如果键不存在:

2.1、不提供默认值:引发 KeyError

2.2、提供默认值:返回默认值而不报错

popitem()

1、移除并返回最后插入的键值对 (Python 3.7+),在 Python 3.6 及之前版本,popitem() 移除的是随机项,不是最后插入的

2、不需要参数

3、字典为空时引发 KeyError

4、返回形式为 (key, value) 元组

主要区别总结

特性pop()popitem()
参数需求必须指定key不需要参数
返回值只返回值返回(key, value)元组
空字典行为键不存在时可能报错必定报错
移除位置指定键最后插入的项(LIFO)
Python版本影响所有版本行为一致3.7+才保证LIFO顺序
典型用途移除特定元素实现栈/缓存淘汰

setdefault方法

setdefault用于获取字典中指定键的值,如果键不存在,则会设置默认值并返回该默认值。

setdefalut与get的区别

get()方法在键不存在时返回默认值但不会修改字典

setdefault()方法在键不存在时会修改字典,添加键值对

5. 字典推导式

类似列表推导式:

squares = {x: x*x for x in range(5)}
# {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

6. 查找键值是否存在

1. 使用 in 关键字(推荐)

my_dict = {'name': 'Alice', 'age': 25}if 'name' in my_dict:print("键 'name' 存在")  # 会执行if 'gender' not in my_dict:print("键 'gender' 不存在")  # 会执行

2. 使用 get() 方法

my_dict = {'name': 'Alice', 'age': 25}# 如果键存在,返回对应的值;不存在则返回None(或指定的默认值)
value = my_dict.get('name')
if value is not None:print(f"键 'name' 存在,值为 {value}")

3. 使用 keys() 方法

my_dict = {'name': 'Alice', 'age': 25}if 'age' in my_dict.keys():print("键 'age' 存在")

4. 使用 try-except 块

my_dict = {'name': 'Alice', 'age': 25}try:value = my_dict['gender']
except KeyError:print("键 'gender' 不存在")

性能比较

1、in 操作符是最快和最Pythonic的方式

2、get() 方法在需要同时获取值时很方便

3、keys() 方法在Python 3中与直接使用in性能相同(因为keys()返回的是视图对象)

4、try-except 适用于预期键通常存在的情况

7. 特殊字典类型

collections模块中的特殊类型,有兴趣可以自己去搜索,博主在这里就不带着大家一块学习了。
collections.defaultdict:带默认值的字典

collections.OrderedDict:保持插入顺序的字典

collections.Counter:计数器专用字典

8. 注意事项

1、检查键是否存在:if key in dict 比 try-except 更高效

2、字典键必须是可哈希的(不可变类型)

3、Python 3.7+ 中字典保持插入顺序

4、不允许用下表查找

9. 应用场景

如JSON数据处理、配置存储。

http://www.dtcms.com/a/299506.html

相关文章:

  • 瑞吉外卖学习笔记
  • 基于FPGA的SPI控制FLASH读写
  • 【C++高效编程】STL queue深度剖析:从底层原理到高级应用
  • 什么是ICMP报文?有什么用?
  • 以实时语音转文字项目为例,介绍一下如何手动部署python应用到Linux服务器(附脚本)
  • 根据ip获取地址库
  • 【Git】Git下载全攻略:从入门到精通
  • 如何在 Git 中控制某些文件不被提交?
  • 图解网络-小林coding笔记(持续更新)
  • 【2025最新】浏览器插件开发选型建议:WXT、Plasmo、原生TS/JS
  • 融合为体,AI为用:数据库在智能时代的破局之道
  • Maven之依赖管理
  • 《Java 程序设计》第 6 章 - 字符串
  • 智慧城市多目标追踪精度↑32%:陌讯动态融合算法实战解析
  • 【Canvas与旗帜】条纹版大明三辰旗
  • 神经网络中的反向传播原理:驱动智能的核心引擎
  • k8s:将打包好的 Kubernetes 集群镜像推送到Harbor私有镜像仓库
  • 电子电气架构 --- 高阶智能驾驶对E/E架构的新要求
  • Java操作Excel文档
  • Spring的深入浅出(6)--使用AOP的思想改造转账案例
  • 人形机器人指南(八)操作
  • 手动开发一个串口调试工具(二):Qt 串口类基本认识与使用
  • 基于 ThinkPHP 开发的垂直化网址导航
  • Linux进程地址空间:深入探索其结构与机制
  • 元宇宙新基建:重塑数字市场的“超大陆”边界
  • 【Android】内容提供器
  • 7️⃣ 递归函数
  • 【AcWing 835题解】滑动窗口
  • 数据结构 双向链表
  • greenhills编译出错问题