Python 3 字典详解
字典(dict
)是 Python 中的一种内置数据类型,用于存储键值对(key-value pairs)。它是一个无序、可变且唯一的集合,键必须是不可变类型(如字符串、数字、元组),而值可以是任意类型。
1. 字典的基本特点
- 无序性:从 Python 3.7 起,字典的插入顺序被保留(即按照插入顺序遍历),但理论上仍被视为无序。
- 键唯一性:字典中的键是唯一的,如果赋值给已存在的键,新值会覆盖旧值。
- 键的不可变性:键必须是不可变类型(如字符串、数字、元组),而值可以是任意类型。
2. 字典的创建
方式一:用花括号创建
my_dict = {"name": "Alice", "age": 25, "city": "New York"}
方式二:用 dict()
构造函数
my_dict = dict(name="Alice", age=25, city="New York")
方式三:用键值对元组的列表创建
my_dict = dict([("name", "Alice"), ("age", 25), ("city", "New York")])
方式四:用字典推导式
squared = {x: x**2 for x in range(1, 6)} # {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
3. 字典的操作
3.1 访问元素
my_dict = {"name": "Alice", "age": 25}
print(my_dict["name"]) # 输出: Alice
注意:如果键不存在,
my_dict["key"]
会抛出KeyError
。
推荐使用dict.get()
方法:
print(my_dict.get("gender", "Not Found")) # 输出: Not Found
3.2 添加/修改元素
my_dict["gender"] = "Female" # 添加键值对
my_dict["age"] = 26 # 修改值
3.3 删除元素
my_dict.pop("age") # 删除键 "age",返回值为 25
del my_dict["name"] # 删除键 "name"
my_dict.clear() # 清空字典
4. 字典的方法
方法 | 描述 |
---|---|
dict.get(key[,default]) | 返回键对应的值,如果键不存在,返回默认值(默认为 None )。 |
dict.keys() | 返回字典中所有键的视图。 |
dict.values() | 返回字典中所有值的视图。 |
dict.items() | 返回字典中所有键值对的视图(返回键值对元组的迭代器)。 |
dict.update(other_dict) | 将另一个字典 other_dict 的键值对合并到当前字典中(覆盖重复键)。 |
dict.pop(key[,default]) | 删除并返回指定键的值,如果键不存在,返回默认值;如果未提供默认值则抛出 KeyError 。 |
dict.popitem() | 删除并返回字典中的最后一个键值对(Python 3.7+ 遵循插入顺序)。 |
dict.setdefault(key[,default]) | 如果键存在,返回其对应的值;否则设置该键值为 default 并返回该值。 |
dict.fromkeys(iterable[,value]) | 创建一个新字典,以可迭代对象的元素为键,默认值为 None 或指定值。 |
5. 遍历字典
my_dict = {"name": "Alice", "age": 25, "city": "New York"}
# 遍历键
for key in my_dict.keys():
print(key)
# 遍历值
for value in my_dict.values():
print(value)
# 遍历键值对
for key, value in my_dict.items():
print(f"{key}: {value}")
6. 字典的嵌套
字典可以嵌套,即值本身可以是另一个字典:
nested_dict = {
"person1": {"name": "Alice", "age": 25},
"person2": {"name": "Bob", "age": 30},
}
print(nested_dict["person1"]["name"]) # 输出: Alice
7. 字典与其他数据结构的转换
- 列表转字典:
pairs = [("name", "Alice"), ("age", 25)]
my_dict = dict(pairs)
- 字典转列表:
keys_list = list(my_dict.keys())
values_list = list(my_dict.values())
8. 应用场景
- 快速查找:基于键的 O(1) 平均时间复杂度。
- 数据映射:适用于描述属性和值的关系。
- 统计计数:如使用
collections.Counter
。 - 缓存:如实现简单的键值缓存系统。
了解和熟练使用字典,将极大提升 Python 编程的效率和灵活性!
标签:一篇,age,dict,文章,键值,字典,my,name From: https://blog.csdn.net/2401_88186301/article/details/144899185