Python字典操作进阶:存在性检查、popitem与深浅拷贝详解

许南星
许南星
发布时间:2026-10-12| 7人浏览过
原创

本文详细解析Python字典的常见操作,包括使用in、not in及get()函数判断键是否存在,并指出get()在值为False或None时的局限性。深入讲解popitem()方法用于删除并返回末尾键值对的用法及空字典报错处理。最后通过代码示例对比浅拷贝与深拷贝在修改嵌套对象时的内存地址差异,帮助开发者准确掌握字典操作细节。

判断字典中的元素是否存在

在Python中,可以使用 in 与 not in 运算符来快速判断某个键是否存在于字典中。

key in dict   # 返回True或False
key not in dict   # 返回True或False

另一种方法是利用 get() 函数。该方法在键不存在时返回默认值(默认为None),通过判断返回值即可间接确认键的存在性。

bool(dict.get(key))   # 返回True或False

需要注意的是,如果字典中某个键对应的值为 False、0、''(空字符串)或 None 等 falsy 值,使用 get() 函数判断时可能会返回 False,从而导致误判。因此,这种方法在特定场景下不够准确。

具体示例如下:

字典中的 popitem() 函数

popitem() 方法用于删除字典中的最后一组键值对,并将其作为元组返回。

dict.popitem()  # 无需传参,返回被删除的键值对,用元组包裹,0索引是key,1索引是value

需要特别注意的是,如果字典为空,调用该方法会引发 KeyError 错误。

示例代码如下:

students = {
    '小明': '到',
    '小白': '在',
    '小黑': '在呢'
}
print(students.popitem())
print(students)
print(students.popitem()))
print(students)

所有数据类型与其布尔值

不同数据类型的布尔值转换示例如下:

a_1 = 1
a_2 = 0
print(bool(a_1))
print(bool(a_2))
print(bool(not a_1))
print(bool(not a_2))

深拷贝与浅拷贝总结

通过以下代码示例展示浅拷贝的行为:

浅拷贝:

import copy
dict_1 = {
    "course": "python",
    "name": {"web": ["django"]}
}
dict_2 = copy.copy(dict_1)
# 修改父对象
dict_2["db"] = "mysql"
# 打印父对象内存地址
print("dict_1:", dict_1, id(dict_1))
print("dict_2:", dict_2, id(dict_2))
# 修改子对象
dict_2["name"]["web"].append("flask")
# 打印子对象内存地址
print("dict_1['name']:", dict_1, id(dict_1["name"]))
print("dict_2['name']:", dict_2, id(dict_2["name"]))

运行结果:

将浅拷贝换成深拷贝后,运行结果:

到此这篇关于python中字典的常见操作总结2的文章就介绍到这了,更多相关python字典操作内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。