呀,Python中居然还有字典推导式

开发 前端
字典推导式可以帮助我们编写更加清晰、简洁的代码,特别是在需要对现有数据进行转换或过滤时。下面我们通过一些例子来看一下字典推导式的实际使用。

在Python中,字典推导式(Dictionary Comprehension)是一种简洁而强大的工具,用于从已有的可迭代对象(如列表、元组、集合或另一个字典)中快速创建新的字典。它采用类似于列表推导式的语法,但生成的结果是字典而非列表。字典推导式可以帮助我们编写更加清晰、简洁的代码,特别是在需要对现有数据进行转换或过滤时。

下面我们通过一些例子来看一下字典推导式的实际使用:

例1:从列表创建字典

假设我们有一个包含学生姓名和分数的列表,我们想要将其转换为一个字典,其中姓名是键,分数是值。


# 原始数据  
names = ['Alice', 'Bob', 'Charlie']  
scores = [90, 85, 92]  
  
# 使用字典推导式创建字典  
student_scores = {name: score for name, score in zip(names, scores)}  
  
print(student_scores)  
# 输出: {'Alice': 90, 'Bob': 85, 'Charlie': 92}

在这个例子中,zip(names, scores) 将姓名和分数配对,然后字典推导式遍历这些对,并将每对中的第一个元素作为键,第二个元素作为值,构建新的字典。

例2:过滤字典中的项

假设我们有一个包含学生姓名和年龄的字典,我们想要创建一个新字典,其中只包含年龄大于20岁的学生。

# 原始数据  
students = {  
    'Alice': 22,  
    'Bob': 19,  
    'Charlie': 23,  
    'David': 18  
}  
  
# 使用字典推导式过滤项  
adults = {name: age for name, age in students.items() if age > 20}  
  
print(adults)  
# 输出: {'Alice': 22, 'Charlie': 23}

在这个例子中,.items() 方法用于获取字典的键值对,if age > 20 是一个条件表达式,用于过滤出年龄大于20岁的学生。

例3:字典值的转换

如果我们要将上述学生年龄字典中的每个年龄都增加2岁,我们可以这样做:

# 原始数据  
students = {  
    'Alice': 22,  
    'Bob': 19,  
    'Charlie': 23,  
    'David': 18  
}  
  
# 使用字典推导式转换值  
students_aged = {name: age + 2 for name, age in students.items()}  
  
print(students_aged)  
# 输出: {'Alice': 24, 'Bob': 21, 'Charlie': 25, 'David': 20}

在这个例子中,字典推导式遍历字典的每一项,并将年龄值加2,然后构建新的字典。

责任编辑:赵宁宁 来源: python学习与大数据分析
相关推荐

2024-06-21 15:19:40

2024-02-22 09:25:09

Python字典推导式开发

2023-12-07 19:33:09

Python推导式

2021-03-02 09:35:33

Python循环开发

2024-05-20 12:00:00

Python列表推导式

2022-02-22 11:50:16

Python字典代码

2024-05-20 08:30:00

Python编程

2021-08-10 10:48:39

拷贝代码架构耦合

2021-03-03 12:55:30

Python列表推导式代码

2022-10-08 15:32:24

Python开发技巧

2023-04-28 07:42:02

2024-02-21 20:43:02

Python列表推导式

2024-09-25 14:16:35

2015-04-14 09:46:09

Apple Watch秘密

2024-04-30 15:05:36

Python接口自动化

2023-10-04 00:43:46

推导式Python

2022-04-08 08:01:07

IPv4地址IPv6

2024-10-28 17:06:50

2024-08-19 00:35:00

Pythondict遍历列表推导式

2021-08-10 10:25:16

HTML 网络开发前端开
点赞
收藏

51CTO技术栈公众号