You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何用map、lambda、reduce替代for循环实现最高销售额书籍统计

实现方案

完全基于map、reduce、lambda实现,无任何显式for循环,运行结果和原函数完全一致。

完整代码

from functools import reduce

def max_book_product(orders):
    # 提取所有订单中的书籍条目,将嵌套结构扁平化
    all_books = reduce(lambda pre, cur: pre + cur, map(lambda order: order[1:], orders))
    # 累计每个书号的总销售额
    total_sales = reduce(
        lambda acc, book: {**acc, book[0]: acc.get(book[0], 0) + book[1] * book[2]},
        all_books,
        {}
    )
    # 取出销售额最高的条目转为列表返回
    return list(max(total_sales.items(), key=lambda item: item[1]))

逻辑说明

  1. 先用map提取每个订单中除订单号外的所有书籍元组,再通过reduce将嵌套的列表拼接为一维的书籍列表,得到所有待计算的书籍条目
  2. 用reduce做累积计算,初始值为空字典,每处理一个书籍元组就更新对应书号的总销售额,字典解包语法{**d, key: value}用来生成新字典避免修改原累积对象
  3. 最后用max函数直接取销售额最高的键值对,转成列表即可得到预期输出

内容的提问来源于stack exchange,提问作者bart

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 13:36:07