【Python入门第十讲】字典

2024-02-01 08:24:44 浏览数 (2)

字典(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 语句可以删除字典中指定键的元素。

代码语言:python代码运行次数:0复制
# 定义一个字典
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 参数指定排序的依据。例如,要按照字典的值的大小进行排序:

代码语言:python代码运行次数:0复制
# 按照字典的值的大小进行排序
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腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

0 人点赞