文章目录
一、字典定义:
字典用于存储键值对(key-value pairs),其中每个键(key)都是唯一的,并且与一个值(value)相关联
二、主要特点:
-
键值对(Key-Value Pairs): 字典的核心是键值对。你可以通过键来快速查找对应的值。
- 无序性(Python 3.6+ 前的版本): 在 Python 3.6 之前,字典中的元素是没有固定顺序的。从 Python 3.7 开始,字典保持插入顺序,但将其视为语言特性是在 Python 3.8 才正式确立。不过,在大多数情况下,你可以依赖字典保持插入顺序。
- 可变性: 字典是可变的,这意味着你可以在创建后添加、删除或修改键值对。
- 键的唯一性: 字典中的每个键必须是唯一的。如果尝试添加一个已经存在的键,新的值会覆盖旧的值。
- 键的类型: 键必须是不可变类型,例如整数、浮点数、字符串或元组(元组中的元素也必须是不可变的)。列表、字典或其他可变类型不能作为键。
- 值的类型: 值可以是任何数据类型,包括数字、字符串、列表、元组、其他字典,甚至是函数或对象。
三、创建字典
1、使用花括号 {}
:
my_dict = {"name": "Alice", "age": 25, "city": "New York"}
print(my_dict) # 输出: {'name': 'Alice', 'age': 25, 'city': 'New York'}
2、使用 dict()
构造函数: (使用键值对列表:)
创建空字典
empty_dict = {}
# 或者
empty_dict = dict()
四、访问字典中的值
使用键来访问对应的值:
my_dict = {"name": "Alice", "age": 25, "city": "New York"}
# 直接通过键访问
print(my_dict["name"]) # 输出: Alice
# 如果键不存在,会抛出 KeyError 异常
# print(my_dict["country"]) # 这会引发 KeyError: 'country'
# 使用 get() 方法更安全,如果键不存在,返回 None 或指定的默认值
print(my_dict.get("name")) # 输出: Alice
print(my_dict.get("country")) # 输出: None
print(my_dict.get("country", "Unknown")) # 输出: Unknown
五、修改字典
1、添加或更新键值对:
my_dict = {"name": "Alice", "age": 25}
# 添加新键值对
my_dict["city"] = "New York"
print(my_dict) # 输出: {'name': 'Alice', 'age': 25, 'city': 'New York'}
# 更新已存在的键的值
my_dict["age"] = 26
print(my_dict) # 输出: {'name': 'Alice', 'age': 26, 'city': 'New York'}
2、删除键值对:使用 del
语句:
del my_dict["age"]
print(my_dict) # 输出: {'name': 'Alice', 'city': 'New York'}
# 如果键不存在,会抛出 KeyError
使用 `pop(key[, default])` 方法:删除指定键并返回对应的值。如果键不存在,可以指定一个默认值返回,否则抛出 KeyError。
age = my_dict.pop("age", None) # 尝试删除 'age',如果不存在则返回 None
print(age) # 输出: None (因为 'age' 已经被删除)
print(my_dict) # 输出: {'name': 'Alice', 'city': 'New York'}
city = my_dict.pop("city")
print(city) # 输出: New York
print(my_dict) # 输出: {'name': 'Alice'}
六、清空字典clear():
my_dict = {"name": "Alice", "age": 25}
my_dict.clear()
print(my_dict) # 输出: {}
七、字典的方法
字典有很多内置方法,非常有用:
1、get
方法:
返回字典中指定键的值。如果键不存在,则返回默认值(如果提供了的话),否则返回 None
d = {'a': 1, 'b': 2}
value = d.get('a') # 返回 1
value = d.get('c', 3) # 返回 3,因为 'c' 不存在
2、pop
方法:
删除并返回字典中指定键的值。如果键不存在,则返回默认值(如果提供了的话),否则抛出 KeyError
d = {'a': 1, 'b': 2}
value = d.pop('a') # 返回 1,并从字典中移除 'a'
value = d.pop('c', 3) # 返回 3,因为 'c' 不存在,不会抛出异常
3、copy
方法:
返回一个新的字典,它是原字典的浅拷贝
d = {'a': 1, 'b': 2}
d_copy = d.copy() # d_copy 是 {'a': 1, 'b': 2} 的浅拷贝
4、key方法:
返回一个视图对象,显示字典的所有键
d = {'a': 1, 'b': 2}
keys = d.keys() # keys 是一个包含 'a' 和 'b' 的视图对象
5、clear
方法:
移除字典中的所有项,使其变为空字典
d = {'a': 1, 'b': 2}
d.clear() # d 现在是空字典 {}
6、fromkeys
方法:
创建一个新字典,其键来自可迭代对象 iterable,值为可选参数 value 的值(如果没有提供,则为 None)
keys = ('a', 'b', 'c')
d = dict.fromkeys(keys, 1) # d 是 {'a': 1, 'b': 1, 'c': 1}
7、items
方法:
返回一个视图对象,显示字典的所有键值对
d = {'a': 1, 'b': 2}
items = d.items() # items 是一个包含 ('a', 1) 和 ('b', 2) 的视图对象
8、popitem
方法
随机地从字典中移除并返回一个键值对。如果字典为空,则抛出 KeyError
d = {'a': 1, 'b': 2}
item = d.popitem() # 随机返回一个键值对,例如 ('b', 2),并从字典中移除它
9、setdefault
方法
如果键存在于字典中,则返回其值;如果键不存在,则在字典中设置该键的值为默认值(如果提供了的话),然后返回这个默认值
d = {'a': 1, 'b': 2}
item = d.popitem() # 随机返回一个键值对,例如 ('b', 2),并从字典中移除它
10、update
方法:
更新字典,将另一个字典(或其他可迭代对象的键值对)的键值对添加到当前字典中。如果键已存在,则更新其值
d = {'a': 1, 'b': 2}
d.update({'b': 3, 'c': 4}) # d 现在是 {'a': 1, 'b': 3, 'c': 4}
八、遍历字典
可以遍历字典的键、值或键值对:
my_dict = {"name": "Alice", "age": 25, "city": "New York"}
# 遍历键
for key in my_dict:
print(key)
# 输出:
# name
# age
# city
# 或者明确使用 keys()
for key in my_dict.keys():
print(key)
# 输出同上
# 遍历值
for value in my_dict.values():
print(value)
# 输出:
# Alice
# 25
# New York
# 遍历键值对 (推荐方式)
for key, value in my_dict.items():
print(f"Key: {key}, Value: {value}")
# 输出:
# Key: name, Value: Alice
# Key: age, Value: 25
# Key: city, Value: New York
九、总结
常见用途
1、存储配置信息。
2、表示对象或实体的属性(如用户信息、产品信息)。
3、作为数据库查询结果的临时存储。
4、统计词频、字符出现次数等。
5、任何需要通过唯一标识符(键)快速查找相关信息(值)的场景。