字典(Dictionary)是 Python 中常用的数据结构之一,用于存储键值对(key-value pairs)。字典的特点是可变的、无序的,且键(key)必须是唯一的,但值(value)可以重复。
在字典中,每个键都与一个值相关联,可以使用键来访问对应的值。字典在 Python 中非常灵活,适用于各种不同的应用场景。
特点和用法
可变性:
- 字典是可变的,可以修改、添加和删除其中的键值对。
键值对:
- 字典由键值对组成,每个键值对包含一个键和一个值,键和值之间使用冒号(:)分隔,不同的键值对之间使用逗号(,)分隔。
无序性:
- 字典中的键值对是无序的,即它们没有固定的顺序。
唯一键:
- 字典中的键必须是唯一的,但值可以重复。
灵活性:
- 字典可以存储不同类型的值,包括数字、字符串、列表、元组、甚至其他字典等。
创建字典
使用花括号 {}
创建字典:
代码语言:python代码运行次数:0复制# 使用花括号创建一个字典
my_dict = {'apple': 2, 'banana': 3, 'orange': 4}
print(my_dict)
输出:
代码语言:python代码运行次数:0复制{'apple': 2, 'banana': 3, 'orange': 4}
使用 dict()
函数创建字典:
代码语言:python代码运行次数:0复制# 使用 dict() 函数创建一个字典
my_dict = dict(apple=2, banana=3, orange=4)
print(my_dict)
输出:
代码语言:python代码运行次数:0复制{'apple': 2, 'banana': 3, 'orange': 4}
使用列表和 zip()
函数创建字典:
代码语言:python代码运行次数:0复制# 使用列表和 zip() 函数创建字典
fruits = ['apple', 'banana', 'orange']
quantities = [2, 3, 4]
my_dict = dict(zip(fruits, quantities))
print(my_dict)
输出:
代码语言:python代码运行次数:0复制{'apple': 2, 'banana': 3, 'orange': 4}
字典嵌套
字典可以嵌套,也就是说字典的值可以是另一个字典。这种嵌套的结构允许我们在一个字典中存储更复杂的数据信息。下面是示例:
代码语言:python代码运行次数:0复制# 嵌套字典示例
students = {
'Alice': {
'age': 25,
'major': 'Computer Science',
'grades': {'math': 90, 'english': 85, 'history': 88}
},
'Bob': {
'age': 23,
'major': 'Engineering',
'grades': {'math': 88, 'english': 82, 'history': 80}
}
}
print(students)
示例中students
字典包含了两个键值对,每个键对应一个学生的信息,其中每个学生的信息又是一个字典,包含年龄、专业和成绩等键值对。这种嵌套结构可以更灵活地组织和管理数据。
字典中的键必须是唯一
字典中的键必须是唯一的。在Python的字典中,每个键都必须是独一无二的,即不能有重复的键。如果你试图使用已经存在的键来添加新的键值对,Python会覆盖原有键的值,而不会报错。
下面是示例说明字典中键必须唯一的特性:
代码语言:python代码运行次数:0复制my_dict = {'name': 'Alice', 'age': 30, 'name': 'Bob'}
print(my_dict)
输出结果会覆盖重复的键值对:
代码语言:python代码运行次数:0复制{'name': 'Bob', 'age': 30}
示例中'name'
键出现了两次,但是由于键必须唯一,Python只会保留最后一次出现的键值对。
字典基本操作
在 Python 中,可以使用键来获取字典中的对应值。
代码语言:python代码运行次数:0复制# 定义一个字典
my_dict = {'name': 'Alice', 'age': 30, 'city': 'New York'}
# 使用键来获取对应的值
name = my_dict['name']
age = my_dict['age']
city = my_dict['city']
print("Name:", name)
print("Age:", age)
print("City:", city)
输出结果将会是:
代码语言:python代码运行次数:0复制Name: Alice
Age: 30
City: New York
注意:如果键不存在于字典中,Python 将会引发 KeyError 错误。因此,在使用键来获取值之前,最好先检查键是否存在于字典中,或者使用 get()
方法来安全地获取值。
获取字典中的值
要获取字典中的值,可以使用字典的键来访问对应的值。
代码语言:python代码运行次数:0复制# 定义一个字典
my_dict = {'name': 'John', 'age': 30, 'city': 'New York'}
# 获取字典中特定键的值
name = my_dict['name']
age = my_dict['age']
city = my_dict['city']
print("Name:", name)
print("Age:", age)
print("City:", city)
这将打印出:
代码语言:python代码运行次数:0复制Name: John
Age: 30
City: New York
注意,如果尝试访问不存在的键,将会引发 KeyError
错误。因此,在访问之前最好先检查键是否存在,可以使用 in
运算符来检查键是否存在于字典中,或者使用 get()
方法安全地获取值。
更新字典中的值
要使用键更新字典中的值,可以直接通过键来赋新值。如果键不存在,则会创建一个新的键值对。
代码语言:python代码运行次数:0复制# 定义一个字典
my_dict = {'name': 'John', 'age': 30, 'city': 'New York'}
# 使用键更新字典中的值
my_dict['age'] = 31 # 更新年龄
my_dict['city'] = 'San Francisco' # 更新城市
print(my_dict)
这将输出更新后的字典:
代码语言:python代码运行次数:0复制{'name': 'John', 'age': 31, 'city': 'San Francisco'}
通过指定已存在的键来更新字典中的值,Python会将该键对应的值更新为新值。如果键不存在,则会添加新的键值对到字典中。
删除字典中指定键的元素
使用 del
语句可以删除字典中指定键的元素。
# 定义一个字典
my_dict = {'name': 'John', 'age': 30, 'city': 'New York'}
# 删除字典中的元素
del my_dict['age'] # 删除键为 'age' 的元素
print(my_dict)
示例中我们使用 del
删除了字典 my_dict
中键为 'age'
的元素。输出将是字典中删除指定元素后的结果。
字典基础方法
下面是关于这些函数和方法的示例:
len(dict)
:
代码语言:python代码运行次数:0复制my_dict = {'a': 1, 'b': 2, 'c': 3}
print(len(my_dict)) # 输出:3
str(dict)
:
代码语言:python代码运行次数:0复制my_dict = {'a': 1, 'b': 2, 'c': 3}
print(str(my_dict)) # 输出:{'a': 1, 'b': 2, 'c': 3}
type(dict)
:
代码语言:python代码运行次数:0复制my_dict = {'a': 1, 'b': 2, 'c': 3}
print(type(my_dict)) # 输出:<class 'dict'>
字典内置方法
字典是 Python 中常用的数据类型之一,具有键-值对的形式存储数据。下面是一些常用的字典基础方法:
dict.clear():
清空字典中的所有项。
代码语言:python代码运行次数:0复制my_dict = {'name': 'John', 'age': 30, 'city': 'New York'}
my_dict.clear()
print(my_dict) # 输出: {}
dict.copy():
返回字典的一个副本。
代码语言:python代码运行次数:0复制
my_dict = {'name': 'John', 'age': 30, 'city': 'New York'}
new_dict = my_dict.copy()
dict.get(key[, default]):
获取指定键的值,如果键不存在于字典中,则返回默认值 None 或指定的默认值。
代码语言:python代码运行次数:0复制my_dict = {'name': 'John', 'age': 30, 'city': 'New York'}
print(my_dict.get('name')) # 输出: John
print(my_dict.get('gender', 'Unknown')) # 输出: Unknown
dict.items():
以列表返回可遍历的 (键, 值) 元组数组。
代码语言:python代码运行次数:0复制my_dict = {'name': 'John', 'age': 30, 'city': 'New York'}
print(my_dict.items()) # 输出: dict_items([('name', 'John'), ('age', 30), ('city', 'New York')])
dict.keys():
返回一个字典所有的键。
代码语言:python代码运行次数:0复制my_dict = {'name': 'John', 'age': 30, 'city': 'New York'}
print(my_dict.keys()) # 输出: dict_keys(['name', 'age', 'city'])
dict.values():
返回一个字典所有的值。
代码语言:python代码运行次数:0复制my_dict = {'name': 'John', 'age': 30, 'city': 'New York'}
print(my_dict.values()) # 输出: dict_values(['John', 30, 'New York'])
dict.pop(key[, default]):
删除字典给定键 key 所对应的值,返回值为被删除的值。如果键不存在,且给了默认值,则返回默认值,否则抛出 KeyError 异常。
代码语言:python代码运行次数:0复制my_dict = {'name': 'John', 'age': 30, 'city': 'New York'}
print(my_dict.pop('age')) # 输出: 30
print(my_dict) # 输出: {'name': 'John', 'city': 'New York'}
dict.popitem():
随机返回并删除字典中的一对键和值,如果字典已经为空,却调用了此方法,就报出 KeyError 异常。
代码语言:python代码运行次数:0复制my_dict = {'name': 'John', 'age': 30, 'city': 'New York'}
print(my_dict.popitem()) # 输出: ('city', 'New York')
print(my_dict) # 输出: {'name': 'John', 'age': 30}
字典拓展
sorted()
函数可以用于对字典的键或值进行排序,并返回一个排序后的列表。
对字典的键进行排序:
代码语言:python代码运行次数:0复制my_dict = {'b': 3, 'a': 1, 'c': 2}
# 对字典的键进行排序,并返回排序后的键列表
sorted_keys = sorted(my_dict.keys())
print(sorted_keys) # 输出: ['a', 'b', 'c']
对字典的值进行排序:
代码语言:python代码运行次数:0复制# 对字典的值进行排序,并返回排序后的值列表
sorted_values = sorted(my_dict.values())
print(sorted_values) # 输出: [1, 2, 3]
对字典的键值对进行排序:
代码语言:python代码运行次数:0复制# 对字典的键值对进行排序,按照键的字母顺序排序
sorted_items = sorted(my_dict.items())
print(sorted_items) # 输出: [('a', 1), ('b', 3), ('c', 2)]
按照字典的值的大小进行:
在排序时,如果希望按照值进行排序,则可以利用 key
参数指定排序的依据。例如,要按照字典的值的大小进行排序:
# 按照字典的值的大小进行排序
sorted_by_value = sorted(my_dict.items(), key=lambda x: x[1])
print(sorted_by_value) # 输出: [('a', 1), ('c', 2), ('b', 3)]
在示例中key=lambda x: x[1]
表示按照每个元组的第二个元素(即值)进行排序。
我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!