手撕Python之散列类型
在Python中,散列类型是一个重要的数据结构,它包括两个主要的内置类型:set
(集合)和dict
(字典)。散列类型的最大特点是,它们可以在平均情况下提供常数时间的查找效率,因此在处理大量数据时尤其高效。
1. 字典(dict)
字典是Python中非常常用的散列类型,它由键(key)和值(value)组成。每个键都是唯一的,且通过键可以快速地访问到对应的值。
1.1 创建字典
你可以通过多种方式创建字典,最常见的是使用花括号 {}
,或者使用 dict()
函数。
# 使用花括号创建字典
my_dict = {
"name": "张三",
"age": 25,
"city": "北京"
}
# 使用 dict() 函数创建字典
my_dict2 = dict(name="李四", age=30, city="上海")
print(my_dict)
print(my_dict2)
1.2 访问和修改字典
通过键可以访问字典中的值,并且字典支持增、删、查、改等操作:
# 访问字典中的值
print(my_dict["name"]) # 输出: 张三
# 修改字典
my_dict["age"] = 26
print(my_dict) # 输出: {'name': '张三', 'age': 26, 'city': '北京'}
# 添加新键值对
my_dict["gender"] = "男"
print(my_dict) # 输出: {'name': '张三', 'age': 26, 'city': '北京', 'gender': '男'}
# 删除键值对
del my_dict["city"]
print(my_dict) # 输出: {'name': '张三', 'age': 26, 'gender': '男'}
1.3 遍历字典
你可以使用for
循环来遍历字典的键、值或键值对:
# 遍历字典的键
for key in my_dict:
print(key)
# 遍历字典的值
for value in my_dict.values():
print(value)
# 遍历字典的键值对
for key, value in my_dict.items():
print(f"{key}: {value}")
2. 集合(set)
集合是一种无序不重复的元素集合,它主要用于去重和成员测试,以及集合运算(比如并集、交集等)。
2.1 创建集合
集合可以使用花括号 {}
或者 set()
函数来创建:
# 使用花括号创建集合
my_set = {1, 2, 3, 4, 5}
# 使用 set() 函数创建集合
my_set2 = set([3, 4, 5, 6, 7])
print(my_set)
print(my_set2)
2.2 添加和删除元素
集合可以动态地添加和删除元素:
# 添加元素
my_set.add(6)
print(my_set) # 输出: {1, 2, 3, 4, 5, 6}
# 删除元素
my_set.remove(3)
print(my_set) # 输出: {1, 2, 4, 5, 6}
# 可以使用 discard() 方法,删除不存在的元素不会抛出异常
my_set.discard(10) # 不会抛出异常
2.3 集合运算
集合支持多种运算,比如并集、交集和差集:
set_a = {1, 2, 3}
set_b = {3, 4, 5}
# 并集
union_set = set_a | set_b
print(union_set) # 输出: {1, 2, 3, 4, 5}
# 交集
intersection_set = set_a & set_b
print(intersection_set) # 输出: {3}
# 差集
difference_set = set_a - set_b
print(difference_set) # 输出: {1, 2}
总结
在Python中,散列类型如字典和集合是非常强大且灵活的数据结构,广泛应用于各种场景。字典提供了键值对的存储,使得数据的查询和操作非常高效;而集合则用来处理独特元素的集合问题,方便进行各种集合运算。掌握这些散列类型可以极大地提高你的编程效率。