超详解——Python 字典详解——小白篇

2024-06-15 10:36:21 浏览数 (1)

字典(Dictionary)是Python中非常重要和实用的数据结构,用于存储键值对(key-value pairs)。字典在很多编程场景中非常有用,因为它们提供了一种高效的方式来管理和访问数据。本文将详细讲解如何创建字典、访问字典中元素、修改字典元素、删除字典元素、查找元素是否是字典的键、标准类型操作符以及常用内置函数。

1. 创建字典

字典是由一系列键值对组成的无序集合。键是唯一的,且必须是不可变的类型(如字符串、数字或元组),值可以是任何类型。字典使用花括号 {} 创建,键和值之间用冒号 : 分隔,键值对之间用逗号 , 分隔。

示例:
代码语言:javascript复制
# 创建一个空字典
empty_dict = {}

# 创建一个包含键值对的字典
person = {"name": "Alice", "age": 25, "city": "New York"}

# 使用 dict() 函数创建字典
person = dict(name="Alice", age=25, city="New York")

# 创建嵌套字典
nested_dict = {"name": "Alice", "details": {"age": 25, "city": "New York"}}

print(empty_dict)  # 输出:{}
print(person)      # 输出:{'name': 'Alice', 'age': 25, 'city': 'New York'}
print(nested_dict) # 输出:{'name': 'Alice', 'details': {'age': 25, 'city': 'New York'}}

2. 访问字典中的元素

字典中的元素可以通过键来访问。如果键不存在,会引发 KeyError 异常。可以使用 get() 方法在键不存在时返回默认值,而不是引发异常。

示例:
代码语言:javascript复制
person = {"name": "Alice", "age": 25, "city": "New York"}

# 使用键访问值
print(person["name"])  # 输出:Alice
print(person["age"])   # 输出:25

# 使用 get() 方法访问值
print(person.get("city"))      # 输出:New York
print(person.get("country"))   # 输出:None
print(person.get("country", "USA"))  # 输出:USA

3. 修改字典元素

字典中的值可以通过键进行修改。如果键不存在,会添加一个新的键值对。

示例:
代码语言:javascript复制
person = {"name": "Alice", "age": 25, "city": "New York"}

# 修改现有键的值
person["age"] = 26
print(person)  # 输出:{'name': 'Alice', 'age': 26, 'city': 'New York'}

# 添加新的键值对
person["country"] = "USA"
print(person)  # 输出:{'name': 'Alice', 'age': 26, 'city': 'New York', 'country': 'USA'}

4. 删除字典元素

可以使用 del 语句或 pop() 方法删除字典中的元素。pop() 方法还会返回被删除的值。popitem() 方法删除并返回字典中的最后一个键值对(在Python 3.7 中,字典是有序的)。

示例:
代码语言:javascript复制
person = {"name": "Alice", "age": 25, "city": "New York", "country": "USA"}

# 使用 del 语句删除元素
del person["country"]
print(person)  # 输出:{'name': 'Alice', 'age': 25, 'city': 'New York'}

# 使用 pop() 方法删除元素
age = person.pop("age")
print(age)     # 输出:25
print(person)  # 输出:{'name': 'Alice', 'city': 'New York'}

# 使用 popitem() 方法删除并返回最后一个键值对
last_item = person.popitem()
print(last_item)  # 输出:('city', 'New York')
print(person)     # 输出:{'name': 'Alice'}
使用 del 语句删除字典元素

del 语句用于从字典中删除指定的键及其对应的值。使用此方法时,如果尝试删除的键不存在,会引发 KeyError 异常。

代码语言:javascript复制
person = {
    "name": "Alice",
    "age": 25,
    "city": "New York",
    "country": "USA"
}

# 使用 del 语句删除键 "country"
del person["country"]
print(person)  # 输出:{'name': 'Alice', 'age': 25, 'city': 'New York'}
使用 pop() 方法删除字典元素

pop() 方法用于删除指定的键,并返回该键对应的值。如果指定的键不存在,同样会引发 KeyError 异常。可以提供一个默认值参数,当键不存在时返回该默认值而不引发异常。

代码语言:javascript复制
person = {
    "name": "Alice",
    "age": 25,
    "city": "New York"
}

# 使用 pop() 方法删除键 "age" 并返回其值
age = person.pop("age")
print(age)     # 输出:25
print(person)  # 输出:{'name': 'Alice', 'city': 'New York'}

# 使用 pop() 方法删除键 "country" 并提供默认值
country = person.pop("country", "Not Found")
print(country)  # 输出:Not Found
print(person)   # 输出:{'name': 'Alice', 'city': 'New York'}
使用 popitem() 方法删除并返回最后一个键值对

popitem() 方法删除并返回字典中的最后一个键值对。在 Python 3.7 及之后的版本中,字典是有序的,因此 popitem() 会删除字典中的最后一个元素。如果字典为空,调用 popitem() 会引发 KeyError 异常。

代码语言:javascript复制
person = {
    "name": "Alice",
    "city": "New York"
}

# 使用 popitem() 方法删除并返回最后一个键值对
last_item = person.popitem()
print(last_item)  # 输出:('city', 'New York')
print(person)     # 输出:{'name': 'Alice'}

5. 查找元素是否是字典的键

可以使用 in 操作符检查一个键是否存在于字典中。

示例:
代码语言:javascript复制
person = {"name": "Alice", "age": 25, "city": "New York"}

# 检查键是否存在
print("name" in person)  # 输出:True
print("country" in person)  # 输出:False

# 检查键是否不存在
print("name" not in person)  # 输出:False
print("country" not in person)  # 输出:True
检查键是否存在

使用 in 操作符可以直接检查键是否在字典中。

代码语言:javascript复制
# 检查键 "name" 是否存在于字典 person 中
print("name" in person)  # 输出:True

# 检查键 "country" 是否存在于字典 person 中
print("country" in person)  # 输出:False
  • "name" in person 返回 True,因为字典 person 中确实存在键 "name"
  • "country" in person 返回 False,因为字典 person 中不存在键 "country"
检查键是否不存在

同样地,我们可以使用 not in 操作符来检查键是否不在字典中。

代码语言:javascript复制
# 检查键 "name" 是否不存在于字典 person 中
print("name" not in person)  # 输出:False

# 检查键 "country" 是否不存在于字典 person 中
print("country" not in person)  # 输出:True
  • "name" not in person 返回 False,因为字典 person 中存在键 "name"
  • "country" not in person 返回 True,因为字典 person 中确实不存在键 "country"

6. 标准类型操作符

字典支持一些常用的标准类型操作符,例如键值对的长度、合并两个字典等。

获取字典长度

使用 len() 函数可以获取字典中键值对的数量。

示例:

代码语言:javascript复制
person = {"name": "Alice", "age": 25, "city": "New York"}
print(len(person))  # 输出:3

合并两个字典

在Python 3.9 中,可以使用 | 操作符合并两个字典。

示例:

代码语言:javascript复制
dict1 = {"name": "Alice"}
dict2 = {"age": 25, "city": "New York"}
merged_dict = dict1 | dict2
print(merged_dict)  # 输出:{'name': 'Alice', 'age': 25, 'city': 'New York'}

在早期版本中,可以使用 update() 方法合并字典。

示例:

代码语言:javascript复制
dict1 = {"name": "Alice"}
dict2 = {"age": 25, "city": "New York"}
dict1.update(dict2)
print(dict1)  # 输出:{'name': 'Alice', 'age': 25, 'city': 'New York'}

7. 常用内置函数

Python提供了一些内置函数,用于操作和处理字典。

keys() 方法

keys() 方法返回字典中所有的键。

示例:

代码语言:javascript复制
person = {"name": "Alice", "age": 25, "city": "New York"}
print(person.keys())  # 输出:dict_keys(['name', 'age', 'city'])

values() 方法

values() 方法返回字典中所有的值。

示例:

代码语言:javascript复制
person = {"name": "Alice", "age": 25, "city": "New York"}
print(person.values())  # 输出:dict_values(['Alice', 25, 'New York'])

items() 方法

items() 方法返回字典中所有的键值对。

示例:

代码语言:javascript复制
person = {"name": "Alice", "age": 25, "city": "New York"}
print(person.items())  # 输出:dict_items([('name', 'Alice'), ('age', 25), ('city', 'New York')])

字典的遍历

可以使用 for 循环遍历字典的键、值或键值对。

示例:

代码语言:javascript复制
person = {"name": "Alice", "age": 25, "city": "New York"}

# 遍历键
for key in person.keys():
    print(key)

# 遍历值
for value in person.values():
    print(value)

# 遍历键值对
for key, value in person.items():
    print(f"{key}: {value}")

0 人点赞