Python 字典推导式:快速创建字典的方法
字典推导式是一种用一行代码构建字典的强大工具。它替代了繁琐的 for 循环和手动赋值,让代码更整洁、运行速度更快。
基础用法:从两个列表创建字典
当你拥有两个列表,一个包含键,一个包含值,想要将它们组合成字典时,使用字典推导式是最快的。
- 准备两个列表,例如
keys(键)和values(值)。 - 使用
zip()函数将两个列表打包在一起。 - 编写推导式语法:
{key: value for key, value in zip(keys, values)}。
代码示例:
fruits = ['apple', 'banana', 'orange']
prices = [10, 5, 8]
# 传统写法(繁琐)
price_dict = {}
for fruit, price in zip(fruits, prices):
price_dict[fruit] = price
# 字典推导式写法(推荐)
price_dict = {fruit: price for fruit, price in zip(fruits, prices)}
print(price_dict)
# 输出: {'apple': 10, 'banana': 5, 'orange': 8}
进阶用法:带条件的筛选
如果你只想保留满足特定条件的数据,可以在推导式末尾添加 if 语句。
- 确定筛选条件,例如只保留价格大于 6 的水果。
- 添加
if value > 6到循环表达式的末尾。 - 执行代码,只有符合条件的数据才会进入新字典。
代码示例:
fruits = ['apple', 'banana', 'orange']
prices = [10, 5, 8]
# 筛选出价格大于 6 的水果
expensive_fruits = {fruit: price for fruit, price in zip(fruits, prices) if price > 6}
print(expensive_fruits)
# 输出: {'apple': 10, 'orange': 8}
实战技巧:处理与修改数据
字典推导式不仅能筛选,还能在创建字典时直接修改数据。
- 输入原始数据,例如包含价格的字典。
- 编写表达式对值进行运算,例如将所有价格打 8 折(乘以 0.8)。
- 观察结果,新字典中的值已经是计算后的结果。
代码示例:
original_prices = {'apple': 10, 'banana': 5, 'orange': 8}
# 将所有价格乘以 0.8
discounted_prices = {fruit: price * 0.8 for fruit, price in original_prices.items()}
print(discounted_prices)
# 输出: {'apple': 8.0, 'banana': 4.0, 'orange': 6.4}
特殊场景:交换键和值
有时你需要快速反转字典的映射关系(例如通过值查找键)。
- 获取原始字典的键值对。
- 交换
for循环中的位置,将value放在冒号前,key放在冒号后。 - 注意:此操作要求原始字典的所有值必须是唯一的,否则后面的键会覆盖前面的键。
代码示例:
mapping = {'a': 1, 'b': 2, 'c': 3}
# 交换键和值
reversed_mapping = {value: key for key, value in mapping.items()}
print(reversed_mapping)
# 输出: {1: 'a', 2: 'b', 3: 'c'}
暂无评论,快来抢沙发吧!