Python字典的创建与删除

131 阅读4分钟

一、前言

在 Python 中,字典(dict) 是一种非常强大且常用的数据结构,用于存储键值对(key-value pairs)。它支持快速查找、插入和删除操作,在实际开发中被广泛应用于配置管理、缓存机制、数据映射等场景。

本文将详细介绍:

✅ 如何创建一个字典
✅ 各种初始化方法对比
✅ 删除字典或字典元素的方式
✅ 使用过程中的注意事项

无论你是刚入门 Python 的新手,还是希望深入理解底层机制的开发者,这篇文章都能为你提供实用的知识点。

二、Python 字典的创建方式

Python 提供了多种灵活的方式来创建字典,以下是常见的几种方法。

1. 使用花括号 {} 创建

d = {}
print(d)  # 输出: {}

d = {"name": "Alice", "age": 25}
print(d)  # 输出: {'name': 'Alice', 'age': 25}

这是最基础也是最直观的创建方式。

2. 使用 dict() 构造函数创建

(1)传入关键字参数

d = dict(name="Bob", age=30)
print(d)  # 输出: {'name': 'Bob', 'age': 30}

⚠️ 注意:这种方式要求键名是合法的标识符(不能有空格或特殊字符)。

(2)传入可迭代对象(如列表、元组)

d = dict([("name", "Charlie"), ("age", 28)])
print(d)  # 输出: {'name': 'Charlie', 'age': 28}

(3)使用字典推导式

keys = ['a', 'b', 'c']
values = [1, 2, 3]
d = {k: v for k, v in zip(keys, values)}
print(d)  # 输出: {'a': 1, 'b': 2, 'c': 3}

(4)从其他字典复制创建

original = {"x": 10, "y": 20}
copy_dict = dict(original)
print(copy_dict)  # 输出: {'x': 10, 'y': 20}

3. 使用 fromkeys() 方法创建

该方法用于创建一个新字典,所有键的值都相同。

d = dict.fromkeys(['name', 'age', 'gender'], None)
print(d)  # 输出: {'name': None, 'age': None, 'gender': None}

✅ 小技巧:如果省略第二个参数,默认值为 None

三、字典的删除操作

Python 提供了多种方式来删除字典中的元素或者整个字典对象。

1. 删除单个键值对:del

d = {"name": "David", "age": 22}
del d["age"]
print(d)  # 输出: {'name': 'David'}

⚠️ 如果键不存在,会抛出 KeyError 异常。

2. 删除并返回指定键的值:.pop()

d = {"name": "Eve", "age": 35}
value = d.pop("age")
print(value)  # 输出: 35
print(d)      # 输出: {'name': 'Eve'}

✅ 可以设置默认值避免异常:

value = d.pop("gender", "not found")
print(value)  # 输出: not found

3. 随机删除一项(Python 3.7+ 为最后插入项):.popitem()

d = {"name": "Frank", "age": 40, "city": "Shanghai"}
item = d.popitem()
print(item)  # 输出: ('city', 'Shanghai') 或最后一个插入的项
print(d)     # 输出: {'name': 'Frank', 'age': 40}

⚠️ 如果字典为空,调用 .popitem() 会抛出 KeyError

4. 清空字典内容:.clear()

d = {"name": "Grace", "age": 28}
d.clear()
print(d)  # 输出: {}

5. 删除整个字典对象:del

d = {"name": "Helen", "age": 29}
del d
# print(d)  # 报错:NameError: name 'd' is not defined

⚠️ 此操作后变量 d 不再存在,尝试访问会报错。

四、注意事项与最佳实践

操作建议
创建字典时使用构造函数或字典推导式更清晰易读
删除元素时优先使用 .pop() 并设置默认值,避免程序崩溃
清空字典时若需保留字典对象,使用 .clear();若不再需要,使用 del
遍历中删除避免在遍历时直接修改字典大小,建议先复制键列表
空字典判断使用 if not d: 判断是否为空,比 len(d) == 0 更简洁

五、总结对比表

操作方法是否安全是否返回值说明
创建空字典{} / dict()最简单
从可迭代对象创建dict(iterable)支持列表/元组等
设置默认值dict.fromkeys(keys, default)所有键共享同一默认值
删除键值对del d[key]❌(可能抛异常)键必须存在
安全删除d.pop(key, default)推荐使用
删除最后一项d.popitem()❌(空字典报错)Python 3.7+ 返回最后插入项
清空字典d.clear()对象仍存在
删除字典对象del d对象不再存在

六、结语

感谢您的阅读!如果你有任何疑问或想要分享的经验,请在评论区留言交流!