Python字典是一种可变容器模型,能够存储任意类型的对象。与列表或元组不同,字典中的元素以键值对(key-value)的形式组织,并且是无序的,因此不支持索引和切片操作。
字典的定义
1. 基本格式
字典通过花括号 {} 定义,内部元素为键值对,格式为:字典名 = {key1: value1, key2: value2, ...}。
my_dict = {"name": "张三", "age": 20, "sex": "男"}
2. 空字典
创建空字典有两种方式:
dict1 = {}
dict2 = dict()
关键点:
- 键(key)必须是唯一的,不可重复。如果重复,后出现的键值对会覆盖先前的。
- 值(value)可以重复,可以是任何数据类型。
- 键必须是不可变的数据类型(如字符串、数字、元组),常用字符串作为键。
字典的基本操作(增删改查)
掌握字典的增删改查是进行Python编程的基础。
1. 增加元素
通过为新的键赋值来添加元素。
my_dict = {"name": "张三", "age": 20}
my_dict["score"] = 100 # 增加新的键值对
print(my_dict) # 输出:{'name': '张三', 'age': 20, 'score': 100}
2. 删除元素
使用 del 语句通过键来删除指定的键值对。
del my_dict["name"]
print(my_dict) # 输出:{'age': 20, 'score': 100}
使用 clear() 方法可以清空整个字典。
my_dict.clear()
print(my_dict) # 输出:{}
3. 查找元素
通过键直接访问对应的值。
my_dict = {"name": "张三", "age": 20}
value = my_dict["age"]
print(value) # 输出:20
4. 修改元素
通过为已存在的键重新赋值来修改对应的值。
my_dict["name"] = "李四"
print(my_dict) # 输出:{'name': '李四', 'age': 20}
字典的常用方法
Python字典内置了许多实用的方法:
len(dict):返回字典中键值对的数量。
dict.keys():返回一个包含所有键的视图对象。
dict.values():返回一个包含所有值的视图对象。
dict.items():返回一个包含所有(键,值)元组的视图对象。
in / not in:判断键或值是否存在于字典中。
my_dict = {"name": "张三", "age": 20, "sex": "男"}
print(len(my_dict)) # 输出:3
print(list(my_dict.keys())) # 输出:['name', 'age', 'sex']
print(list(my_dict.values())) # 输出:['张三', 20, ‘男’]
print(list(my_dict.items())) # 输出:[('name', '张三'), ('age', 20), ('sex', ‘男’)]
if 20 in my_dict.values():
print(“值20存在”)
三种主要的取值方式
除了直接通过键索引,还有更安全灵活的取值方法。
1. 直接索引 dict[key]
最直接的方式,但如果键不存在会引发KeyError。
value = my_dict["age"]
2. get(key[, default]) 方法
安全取值方法。如果键存在,返回其值;如果不存在,则返回指定的默认值(默认为None),且不会修改原字典。
print(my_dict.get(“name”)) # 输出:’张三‘
print(my_dict.get(“address”, “北京”)) # 键不存在,返回’北京‘
print(my_dict) # 原字典不变
3. setdefault(key[, default]) 方法
兼具取值和新增的功能。如果键存在,返回其值;如果不存在,则将该键及其默认值插入字典,并返回默认值。
print(my_dict.setdefault(“name”, “佚名”)) # 键存在,返回’张三‘,字典不变
print(my_dict.setdefault(“address”, “上海”)) # 键不存在,插入{’address‘: ’上海‘},并返回’上海‘
print(my_dict) # 字典已被修改
字典的遍历技巧
遍历字典是数据处理中的常见操作,有多种方式。
my_dict = {"name": "小红", "age": 20, "sex": "女"}
1. 遍历所有的键
for key in my_dict.keys():
print(key)
2. 遍历所有的值
for value in my_dict.values():
print(value)
3. 遍历所有的键值对(返回元组)
for item in my_dict.items():
print(item) # 输出如:('name', '小红')
4. 同时遍历键和值(推荐)
通过解包直接获取键和值,这是最常用和清晰的遍历方式。
for key, value in my_dict.items():
print(f”{key}: {value}”)
5. 遍历时获取索引
使用 enumerate() 函数可以在遍历键的同时获取序号。
for index, key in enumerate(my_dict):
print(index, key)