前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Python入门第十讲】字典

【Python入门第十讲】字典

原创
作者头像
不惑
发布2024-02-01 08:24:44
2020
发布2024-02-01 08:24:44
举报
文章被收录于专栏:Python基础系列Goboy

字典(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腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 特点和用法
    • 可变性:
      • 键值对:
        • 无序性:
          • 唯一键:
            • 灵活性:
            • 创建字典
              • 使用花括号 {} 创建字典:
                • 使用 dict() 函数创建字典:
                  • 使用列表和 zip() 函数创建字典:
                  • 字典嵌套
                    • 字典中的键必须是唯一
                    • 字典基本操作
                      • 获取字典中的值
                        • 更新字典中的值
                          • 删除字典中指定键的元素
                          • 字典基础方法
                            • len(dict) :
                              • str(dict) :
                                • type(dict) :
                                • 字典内置方法
                                  • dict.clear():
                                    • dict.copy():
                                      • dict.get(key[, default]):
                                        • dict.items():
                                          • dict.keys():
                                            • dict.values():
                                              • dict.pop(key[, default]):
                                                • dict.popitem():
                                                • 字典拓展
                                                  • 对字典的键进行排序:
                                                    • 对字典的值进行排序:
                                                      • 对字典的键值对进行排序:
                                                        • 按照字典的值的大小进行:
                                                        领券
                                                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档