Python 字典(Dictionary)是一种非常重要的数据结构,用于存储键-值对的集合。字典是可变的,可以添加、删除和修改其中的项。
创建字典:
可以使用花括号{}
来创建一个空字典,或者使用{key: value, key: value}
的格式来创建一个包含键-值对的字典。
empty_dict = {} # 创建一个空字典
person = {"姓名": "Alice", "年龄": 30} # 创建一个包含键-值对的字典
访问字典元素:
可以使用键来访问字典中的值。字典中的键是唯一的。
person = {"姓名": "Alice", "年龄": 30}
name = person["姓名"] # 获取键"姓名"对应的值,即 "Alice"
age = person["年龄"] # 获取键"年龄"对应的值,即 30
字典长度:
可以使用内置函数len()
来获取字典中键-值对的数量。
person = {"姓名": "Alice", "年龄": 30}
num_items = len(person) # 获取字典中键-值对的数量,即 2
字典基本操作:
1. 添加键-值对:
可以使用dict[key] = value
语法向字典中添加新的键-值对。
person = {"姓名": "Alice", "年龄": 30}
person["城市"] = "纽约"
# 现在,person 变为 {"姓名": "Alice", "年龄": 30, "城市": "纽约"}
2. 修改值:
如果已经存在的键,可以通过赋值来修改其对应的值。
person = {"姓名": "Alice", "年龄": 30}
person["年龄"] = 31
# 现在,person 变为 {"姓名": "Alice", "年龄": 31}
3. 删除键-值对:
可以使用del
语句来删除字典中的键-值对。
person = {"姓名": "Alice", "年龄": 30}
del person["年龄"]
# 现在,person 变为 {"姓名": "Alice"}
字典键的特性
1.唯一性
字典中的键必须是唯一的。每个键只能对应一个值。如果您尝试将相同的键添加到字典中多次,后面的键值对将覆盖前面的值。
person = {"姓名": "Alice", "年龄": 30}
person["年龄"] = 31 # 更新键"年龄"的值,不会创建新的键-值对
2.不可变性
字典的键必须是不可变的数据类型,通常使用字符串、数字或元组作为键。这是因为字典使用键来唯一标识值,如果键是可变的,可能会导致问题。
valid_dict = {"key": "value", 42: "forty-two", (1, 2): "tuple_key"}
# 以下操作会引发 TypeError,因为列表是可变的
# invalid_dict = {[1, 2]: "list_key"}
3.无序性
在Python 3.7之前,字典是无序的,这意味着字典中的键-值对没有特定的顺序。从Python 3.7开始,字典保持了插入顺序,即字典中的键-值对按照插入的顺序排列。
fruits = {"apple": 3, "banana": 2, "orange": 4}
# 在Python 3.7及更高版本中,字典保持插入顺序
# 在之前的版本中,字典可能会以不同的顺序显示
4.可迭代性
可以轻松地遍历字典中的键或值。可以使用keys()
方法获取所有键,使用values()
方法获取所有值,或者使用items()
方法获取所有键-值对。
person = {"姓名": "Alice", "年龄": 30}
keys = person.keys() # 获取所有键,返回可迭代对象
values = person.values() # 获取所有值,返回可迭代对象
items = person.items() # 获取所有键值对,返回可迭代对象
字典内置函数和字典内置方法
字典内置函数
函数 | 描述 |
---|---|
len(dictionary) |
返回字典中键-值对的数量。 |
str(dictionary) |
将字典转换为字符串。 |
type(variable) |
返回变量的数据类型,通常用于检查是否为字典。 |
sorted(iterable) |
返回一个排序后的字典键列表。 |
字典内置方法
方法 | 描述 |
---|---|
dict.clear() |
删除字典中的所有键-值对。 |
dict.copy() |
返回字典的浅拷贝(新的字典对象,但键-值对相同)。 |
dict.get(key, default=None) |
返回键 key 对应的值,如果键不存在则返回 default 。 |
dict.items() |
返回一个包含所有键值对的可迭代对象。 |
dict.keys() |
返回一个包含所有键的可迭代对象。 |
dict.values() |
返回一个包含所有值的可迭代对象。 |
dict.pop(key, default=None) |
删除键 key 对应的键-值对,并返回值;如果键不存在则返回 default 。 |
dict.popitem() |
随机删除并返回一个键-值对。 |
dict.setdefault(key, default=None) |
返回键 key 对应的值,如果键不存在则设置为 default 并返回。 |
dict.update(iterable) |
使用另一个字典或可迭代对象的键-值对更新字典。 |
dict.fromkeys(iterable, value=None) |
创建一个新字典,以 iterable 中的元素作为键,所有值都设置为 value 。 |