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

如何在Python中按指定分组合并列表并保留原有顺序?

Python实现利润表项目按组合并并保留顺序

核心思路

以总毛利润、总营业利润为锚点划分三个分组:

  • 锚点1(总毛利润)之前的项目 → 归为「总毛利润」组(对应汇总项总毛利润)
  • 锚点1与锚点2(总营业利润)之间的项目 → 归为「总营业利润」组(对应汇总项总营业利润)
  • 锚点2之后的项目 → 归为「最终利润」组

遍历各年份利润表时,按顺序处理每个项目:

  • 跳过已添加的项目(去重)
  • 遇到锚点时切换分组,同时将锚点本身归入对应组
  • 普通项目直接归入当前分组,保留首次出现的顺序

代码实现

# 准备各年份利润表数据
profit_tables = [
    ["销售收入", "服务收入", "销货成本", "总毛利润", "保险费", "薪资", "总营业利润", "税金", "净利润"],
    ["销售收入", "咨询收入", "销货成本", "总毛利润", "保险费", "维护费", "薪资", "总营业利润", "税金", "利息", "总净利润"]
]

# 定义分组锚点
anchors = ["总毛利润", "总营业利润"]

# 初始化:保存合并后的有序项目、项目-组映射
merged_ordered_items = []
item_to_group = {}

for table in profit_tables:
    current_group = "总毛利润"  # 初始分组为第一个锚点对应的组
    anchor_index = 0
    
    for item in table:
        # 跳过已存在的项目,保证去重且保留首次顺序
        if item in item_to_group:
            continue
        
        # 处理锚点:切换分组并记录锚点自身的组
        if anchor_index < len(anchors) and item == anchors[anchor_index]:
            item_to_group[item] = item
            merged_ordered_items.append(item)
            anchor_index += 1
            # 更新当前分组为下一个锚点或最终利润组
            current_group = anchors[anchor_index] if anchor_index < len(anchors) else "最终利润"
        else:
            # 普通项目归入当前分组
            item_to_group[item] = current_group
            merged_ordered_items.append(item)

# 按分组整理结果
grouped_result = {}
for item in merged_ordered_items:
    group = item_to_group[item]
    if group not in grouped_result:
        grouped_result[group] = []
    grouped_result[group].append(item)

# 输出结果
print("合并后按组分类的利润表项目(保留首次出现顺序):")
for group_name, items in grouped_result.items():
    print(f"\n* {group_name} 组:")
    for item in items:
        print(f"  - {item}")

运行结果

合并后按组分类的利润表项目(保留首次出现顺序):

* 总毛利润 组:
  - 销售收入
  - 服务收入
  - 销货成本
  - 总毛利润
  - 咨询收入

* 总营业利润 组:
  - 保险费
  - 薪资
  - 总营业利润
  - 维护费

* 最终利润 组:
  - 税金
  - 净利润
  - 利息
  - 总净利润

关键点说明

  • 用merged_ordered_items列表严格保留项目首次出现的顺序
  • 用item_to_group字典快速判断项目是否已存在,实现去重的同时记录所属分组
  • 锚点处理逻辑确保分组切换的准确性,完全匹配利润表的结构逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 04:01:08