文章目录
- 案例背景
- 示例数据
- 使用 `dict` 求和
- 步骤说明
- 代码实现
- 优化说明
在数据处理和分析中,经常需要将嵌套列表中的数据进行汇总和计算。
本文将通过一个实际案例,展示如何使用 dict
和 dict.get()
方法对嵌套列表进行求和操作。
案例背景
假设你是一名数据分析师,负责分析某电商平台的销售数据。销售数据以嵌套列表的形式存储,每个子列表包含以下三个元素:
- 产品类别(如“电子产品”、“家居用品”)
- 产品名称(如“手机”、“笔记本”、“沙发”)
- 销售额
你的任务是统计每个类别下各产品的总销售额。
示例数据
以下是部分销售数据的示例:
python">sales_data = [
['电子产品', '手机', 1000],
['电子产品', '笔记本', 1500],
['家居用品', '沙发', 800],
['电子产品', '手机', 500],
['家居用品', '桌子', 300],
['电子产品', '笔记本', 700],
['家居用品', '沙发', 200]
]
使用 dict
求和
步骤说明
- 初始化一个空字典:用于存储每个类别下各产品的总销售额。
- 遍历嵌套列表:对于每个销售记录,提取产品类别、产品名称和销售额。
- 创建复合键:使用元组
(类别, 产品名称)
作为字典的键。 - 使用
dict.get()
进行累加:- 如果键不存在,
dict.get(key, 0)
返回默认值0
。 - 将当前销售额与已有值相加,并更新字典。
- 如果键不存在,
代码实现
python"># 初始化一个空字典用于存储结果
sales_summary = {}
# 遍历每个销售记录并累加销售额
for record in sales_data:
category, product, amount = record # 解包子列表
key = (category, product) # 创建复合键
sales_summary[key] = sales_summary.get(key, 0) + amount # 使用 dict.get() 优化
# 输出汇总结果
print("销售数据汇总:")
for key, total in sales_summary.items():
print(f"{key[0]} -> {key[1]}: {total}")
输出结果
销售数据汇总:
电子产品 -> 手机: 1500
电子产品 -> 笔记本: 2200
家居用品 -> 沙发: 1000
家居用品 -> 桌子: 300
优化说明
在未优化的代码中,我们需要先检查字典中是否存在某个键,如果不存在则初始化该键的值,然后再进行累加操作。这种方法代码较为冗长,可读性较差。
原始写法
if key in sales_summary:
sales_summary[key] += amount
else:
sales_summary[key] = amount
优化后写法
sales_summary[key] = sales_summary.get(key, 0) + amount # 使用 dict.get() 优化
原始写法需要先检查键是否存在,如果不存在则初始化该键的值。
- 代码较为冗长,可读性较差。
- 在处理大规模数据时,频繁的条件判断可能影响性能。
使用dict.get(key, default)
方法简化了键存在性检查和初始化操作。
- 代码更加简洁明了,易于理解和维护。
- 减少了条件判断的次数,提高了代码的执行效率。