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

如何在Python中按相同索引分组多列表的重复项?

按姓名分组关联多列表数据的解决方案

你可以用Python的字典来实现分组,推荐使用collections.defaultdict简化操作,它能自动处理键不存在的情况,避免冗余判断。以下是完整实现代码:

from collections import defaultdict

name_list = ["trung", "key", "trung","kayla","john","trung","key"]
id_list  = ["123", "456", "789", "852", "545", "915", "712"]
summary_list = ["aa12", "bb99", "cc66", "dd854", "ee842", "ff723", "gg413"]
version_list = ["a01", "a22", "a23", "a94", "a05", "a42", "a34"]

# 初始化分组字典,每个键对应包含三个空列表的字典
grouped_data = defaultdict(lambda: {"ids": [], "summaries": [], "versions": []})

# 按索引配对多列表数据,完成分组
for name, id_val, summary, version in zip(name_list, id_list, summary_list, version_list):
    grouped_data[name]["ids"].append(id_val)
    grouped_data[name]["summaries"].append(summary)
    grouped_data[name]["versions"].append(version)

# 格式化输出所有分组结果
for name, data in grouped_data.items():
    print(f"Name: {name.capitalize()}")
    print(f"id_list = {data['ids']}")
    print(f"summary_list = {data['summaries']}")
    print(f"version_list = {data['versions']}")
    print()  # 空行分隔不同分组

关键逻辑说明:

  1. zip()函数:将四个列表按索引一一配对,每次循环取出同一位置的姓名、id、摘要和版本数据。
  2. defaultdict:预设默认值为包含三个空列表的字典,首次遇到新姓名时会自动创建对应结构,无需手动判断键是否存在。
  3. 分组逻辑:遍历过程中把对应数据追加到对应姓名的列表中,自动完成聚合。
  4. 输出处理:遍历分组后的字典,用capitalize()让姓名首字母大写,完全匹配你需要的输出格式。

这段代码会输出所有姓名的分组结果,包括只出现一次的kayla和john,既不会产生重复内容,也不会遗漏任何项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 16:30:58