使用dict对嵌套列表进行求和及优化案例

news/2025/2/25 10:07:31

文章目录

  • 案例背景
    • 示例数据
  • 使用 `dict` 求和
    • 步骤说明
    • 代码实现
  • 优化说明


在数据处理和分析中,经常需要将嵌套列表中的数据进行汇总和计算。
本文将通过一个实际案例,展示如何使用 dictdict.get() 方法对嵌套列表进行求和操作。


案例背景

假设你是一名数据分析师,负责分析某电商平台的销售数据。销售数据以嵌套列表的形式存储,每个子列表包含以下三个元素:

  1. 产品类别(如“电子产品”、“家居用品”)
  2. 产品名称(如“手机”、“笔记本”、“沙发”)
  3. 销售额

你的任务是统计每个类别下各产品的总销售额。


示例数据

以下是部分销售数据的示例:

python">sales_data = [
    ['电子产品', '手机', 1000],
    ['电子产品', '笔记本', 1500],
    ['家居用品', '沙发', 800],
    ['电子产品', '手机', 500],
    ['家居用品', '桌子', 300],
    ['电子产品', '笔记本', 700],
    ['家居用品', '沙发', 200]
]

使用 dict 求和

步骤说明

  1. 初始化一个空字典:用于存储每个类别下各产品的总销售额。
  2. 遍历嵌套列表:对于每个销售记录,提取产品类别、产品名称和销售额。
  3. 创建复合键:使用元组 (类别, 产品名称) 作为字典的键。
  4. 使用 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)方法简化了键存在性检查和初始化操作。

  • 代码更加简洁明了,易于理解和维护。
  • 减少了条件判断的次数,提高了代码的执行效率。

http://www.niftyadmin.cn/n/5865360.html

相关文章

20分钟 Bash 上手指南

文章目录 bash 概念与学习目的第一个 bash 脚本bash 语法变量的使用位置参数管道符号(过滤条件)重定向符号条件测试命令条件语句case 条件分支Arrayfor 循环函数exit 关键字 bash 脚本记录历史命令查询文件分发内容 bash 概念与学习目的 bash&#xff0…

吐血整理:在 Docker 中运行 Milvus

直接用docker 错误命令(这个我试了三遍,浪费了很多时间): docker run -d --name milvus -p 19530:19530 -p 9091:9091 -v /var/lib/milvus:/var/lib/milvus milvusdb/milvus:latest 先看报错: 2025-02-24 16:02:39 …

GEE中的JavaScript语法基础

以下是Google Earth Engine(GEE)中JavaScript语法的基础知识,这些知识可以帮助你在GEE环境中进行有效的编码和数据处理: JavaScript语法基础 1. 变量和数据类型 变量声明:在GEE中,我们使用 var 关键字来声…

【高并发】高并发架构设计

一、问题拆解方法论 明确场景边界 流量规模(QPS/TPS/数据量)业务特征(读多写少/写密集型/实时性要求)容忍度(延迟要求/数据一致性级别) 示例: “在电商秒杀场景中,我们面对的是瞬时10万QPS的读请求洪峰,要求99.9%请求在200ms内响应,且要保证库存准确性”分层优化策略…

VMware17下安装Ubuntu22.04与Docker(附带:1.解决重启后IP重置问题。2.多个虚拟机之间网络通信)

VMware17下安装Ubuntu22.04与Docker (附带:1.解决重启后IP重置问题。2.多个虚拟机之间网络通信) 文章目录 VMware17下安装Ubuntu22.04与Docker前言1 Ubuntu22.04 Server下载2 VMware17设置虚拟机的连接网络3 安装Ubuntu22.04虚拟机4 设置ro…

SMT贴片代工高效解决方案

内容概要 在现代电子制造领域,SMT贴片代工作为智能制造的关键环节,其技术演进正推动着行业效率的持续跃升。专业代工服务通过集成全流程数字化管理系统,构建起从基板预处理到回流焊接的完整工艺链,其中全自动高速贴片机采用视觉对…

DLP数据防泄漏产品的关键性能指标

DLP数据防泄漏产品的关键性能指标包括以下几个方面: Refer:揭秘数据丢失防护(DLP):保护敏感信息的关键_dlp协议-CSDN博客 一、数据识别能力(核心能力) 准确率(Precision rate): 准确识别敏感数据的能力,…

sysbench压测pgsql数据库 —— 筑梦之路

这里主要使用sysbench工具对Pgsql数据库进行基准测试。 1. 创建数据库和用户名 # 创建用户和数据库CREATE USER sysbench WITH PASSWORD 123456;CREATE DATABASE sysbench owner sysbench;# 给用户授权访问 vim pg_hba.confhost sysbench sysbench 127…