1. 字典的定义与特点
字典是Python中的一种内置数据结构,用于存储键值对(Key-Value pairs)。每个键值对用冒号(:)分隔,键值对之间用逗号(,)分隔,整个字典用花括号({})包围。
字典的特点:
- 无序性:字典中的元素是无序的。
- 可变:可以修改字典的内容,如添加、删除或更改键值对。
- 唯一性:每个键都是唯一的,如果使用重复的键,后面的键值对会覆盖前面的键值对。
- 灵活性:键可以是任何不可变类型,而值可以是任何类型。
2. 字典的创建与访问
- 创建:使用花括号
{}
或dict()
函数创建字典。 - 访问:通过键来访问字典中的值,使用
my_dict[key]
。
3. 字典的常用操作
- 新增元素:使用
my_dict[new_key] = value
。 - 更新元素:对已存在的键赋新值,同样使用
my_dict[key] = new_value
。 - 删除元素:使用
del my_dict[key]
或my_dict.pop(key)
,后者返回被删除的值。 - 清空字典:使用
my_dict.clear()
。
4. 字典的遍历
- 遍历键:使用
my_dict.keys()
或直接遍历for key in my_dict
。 - 遍历值:使用
for value in my_dict.values()
。 - 遍历键值对:使用
for key, value in my_dict.items()
。
5. 字典的嵌套
字典的键和值可以是任意数据类型,包括另一个字典,从而实现嵌套结构。
6. 示例代码分析
以下是对提供的示例代码的分析:
- 重复键的字典:字典不允许重复的键,所以尝试创建具有重复键的字典时,最后一个键值对会覆盖前面的键值对。
my_dict1 = {"王力鸿": 99, "王力鸿": 88, "林俊节": 77} # 实际上 my_dict1 只会包含一个 "王力鸿" 的键,其值为 88。
- 字典的嵌套:字典可以存储另一个字典作为值,形成嵌套结构,这在存储复杂数据时非常有用。
stu_score_dict = { "王力鸿": {"语文": 77, "数学": 66, "英语": 33}, # 其他学生的数据... }
- 字典的常用操作:示例代码演示了如何新增、更新、删除字典中的元素,以及如何清空整个字典。
7. 扩展建议
- 错误处理:在访问字典的值时,如果键不存在,会引发
KeyError
。可以使用get()
方法来避免这个错误,例如my_dict.get("key", default_value)
。 - 字典推导式:可以使用字典推导式来创建字典,例如
{key: value for ...} 或 {expr: value for ...}
。 - 默认字典:
collections
模块中的defaultdict
类型允许指定缺失键的默认值类型。
8. 代码示例扩展
以下是对字典操作的一些扩展示例:
from collections import defaultdict
# 使用 get() 方法避免 KeyError
score = my_dict1.get("不存在的键", "默认值")
print(f"尝试获取不存在的键的值:{score}")
# 字典推导式
squared = {x: x**2 for x in range(6)}
print(f"使用字典推导式创建的平方字典:{squared}")
# 默认字典
dd = defaultdict(list)
dd["数学"].append(88)
dd["英语"].append(77)
print(f"默认字典:{dd}")
通过这些示例和扩展,可以更深入地理解字典的使用方法和高级特性。