字典与集合
Python 中,字典(dict
)和集合(set
)是两个非常重要的内置数据类型。字典是键值对的集合,而集合是无序的唯一元素集合。本节将介绍字典和集合的基本用法和常见操作。
1. 字典
1.1 字典的定义
字典是一种可变的、无序的数据结构,存储键值对(key-value pair)。字典的键必须是唯一且不可变的(如字符串、数字、元组),而值可以是任何数据类型。字典使用大括号 {}
表示,键和值之间用冒号 :
分隔。
my_dict = {"name": "Alice", "age": 25, "city": "New York"}
print(my_dict)
输出结果:
{'name': 'Alice', 'age': 25, 'city': 'New York'}
1.2 访问字典元素
通过键来访问字典中的值。如果键不存在,会引发 KeyError
。
print(my_dict["name"]) # 输出:Alice
可以使用 get()
方法访问元素,这种方法在键不存在时不会引发错误,而是返回 None
或指定的默认值。
print(my_dict.get("age")) # 输出:25
print(my_dict.get("address", "未找到该键")) # 输出:未找到该键
1.3 修改字典
字典是可变的,因此可以通过指定键来修改字典的值。
my_dict["age"] = 30
print(my_dict) # 输出:{'name': 'Alice', 'age': 30, 'city': 'New York'}
1.4 添加元素
向字典中添加新的键值对。
my_dict["address"] = "123 Street"
print(my_dict) # 输出:{'name': 'Alice', 'age': 30, 'city': 'New York', 'address': '123 Street'}
1.5 删除元素
可以使用 del
关键字或 pop()
方法从字典中删除指定的键值对。
del my_dict["city"]
print(my_dict) # 输出:{'name': 'Alice', 'age': 30, 'address': '123 Street'}
my_dict.pop("address")
print(my_dict) # 输出:{'name': 'Alice', 'age': 30}
1.6 字典的常用方法
-
keys()
:返回字典中所有键的视图。print(my_dict.keys()) # 输出:dict_keys(['name', 'age'])
-
values()
:返回字典中所有值的视图。print(my_dict.values()) # 输出:dict_values(['Alice', 30])
-
items()
:返回字典中所有键值对的视图。print(my_dict.items()) # 输出:dict_items([('name', 'Alice'), ('age', 30)])
-
update()
:将另一个字典或键值对更新到当前字典。my_dict.update({"city": "San Francisco", "phone": "123-456-7890"}) print(my_dict) # 输出:{'name': 'Alice', 'age': 30, 'city': 'San Francisco', 'phone': '123-456-7890'}
-
clear()
:清空字典。my_dict.clear() print(my_dict) # 输出:{}
2. 集合
2.1 集合的定义
集合是一种无序且元素唯一的数据结构。集合中的元素必须是不可变的(如字符串、数字、元组)。集合使用大括号 {}
表示,或者使用 set()
函数创建。
my_set = {1, 2, 3, 4, 5}
print(my_set) # 输出:{1, 2, 3, 4, 5}
如果需要创建空集合,必须使用 set()
,因为空的 {}
是空字典。
empty_set = set()
print(type(empty_set)) # 输出:<class 'set'>
2.2 集合的特点
- 无序:集合中的元素没有特定的顺序。
- 唯一性:集合中的每个元素都是唯一的,重复元素会被自动去重。
my_set = {1, 2, 2, 3}
print(my_set) # 输出:{1, 2, 3}
2.3 集合的常用操作
-
添加元素
使用add()
方法向集合中添加元素。my_set = {1, 2, 3} my_set.add(4) print(my_set) # 输出:{1, 2, 3, 4}
-
删除元素
使用remove()
方法删除集合中的指定元素,如果元素不存在,会引发KeyError
。my_set.remove(2) print(my_set) # 输出:{1, 3, 4}
使用
discard()
方法删除元素,如果元素不存在不会引发错误。my_set.discard(5) # 不会报错
-
集合的长度
使用len()
函数可以获取集合的大小。print(len(my_set)) # 输出:3
-
清空集合
使用clear()
方法清空集合。my_set.clear() print(my_set) # 输出:set()
2.4 集合的常见操作
-
集合的并集
使用union()
或|
运算符获取两个集合的并集(包含两个集合中的所有元素)。set1 = {1, 2, 3} set2 = {3, 4, 5} print(set1.union(set2)) # 输出:{1, 2, 3, 4, 5} print(set1 | set2) # 输出:{1, 2, 3, 4, 5}
-
集合的交集
使用intersection()
或&
运算符获取两个集合的交集(两个集合中共同的元素)。print(set1.intersection(set2)) # 输出:{3} print(set1 & set2) # 输出:{3}
-
集合的差集
使用difference()
或-
运算符获取集合的差集(存在于第一个集合但不在第二个集合中的元素)。print(set1.difference(set2)) # 输出:{1, 2} print(set1 - set2) # 输出:{1, 2}
-
集合的对称差
使用symmetric_difference()
或^
运算符获取两个集合的对称差(两个集合中不重复的元素)。print(set1.symmetric_difference(set2)) # 输出:{1, 2, 4, 5} print(set1 ^ set2) # 输出:{1, 2, 4, 5}
2.5 集合的遍历
可以使用 for
循环遍历集合中的元素。
my_set = {1, 2, 3, 4}
for item in my_set:
print(item)
3. 字典与集合的区别
特性 | 字典 (dict ) | 集合 (set ) |
---|---|---|
元素存储方式 | 键值对(key-value pair) | 唯一元素集合 |
是否有序 | Python 3.7+ 中为插入顺序(以前版本为无序) | 无序 |
可变性 | 键和值都可以修改 | 元素可修改 |
元素是否唯一 | 键必须唯一,值可以重复 | 元素必须唯一 |
常用用途 | 存储和快速查找键值对 | 集合操作、去重及集合运算 |
4. 小结
字典和集合是 Python 中强大的数据结构。字典主要用于存储键值对,支持高效的查找操作;集合则用于存储唯一值,提供了丰富的集合运算功能。在日常编程中,理解并掌握字典和集合的用法可以极大提升程序的性能和可读性。