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

如何使用Python迭代字典列表并按公共键值分组以适配API消费格式

如何用Python按Team和Coach分组球员数据,避免重复信息

Hey there! 作为Python新手,处理这类分组问题确实容易摸不着头脑,我来帮你搞定这个需求。咱们的目标很明确:把同一个团队+教练组合下的球员归到一起,不再重复显示团队和教练信息对吧?

核心思路

我们可以用一个字典作为临时的分组容器,把(team, coach)这个元组作为唯一键(因为元组可哈希,能精准区分不同的团队教练组合),这样相同组合的球员就会被自动归到同一组里。最后再把这个字典转换成你需要的结构化列表就行。

完整代码实现

# 你的输入数据
players_data = [
    {"id": "3", "name": "John", "team": "corinthians", "coach": "Chris"},
    {"id": "2", "name": "Ben", "team": "palmeiras", "coach": "Aron"},
    {"id": "6", "name": "Frank", "team": "palmeiras", "coach": "Aron"},
    {"id": "7", "name": "Evan", "team": "corinthians", "coach": "Chris"},
    {"id": "1", "name": "Micheal", "team": "palmeiras", "coach": "Aron"},
    {"id": "10", "name": "Zack", "team": "santos", "coach": "David"}
]

# 初始化一个空字典用来分组
grouped_teams = {}

# 遍历每一条球员数据
for player in players_data:
    # 用(team, coach)作为唯一标识键
    group_key = (player["team"], player["coach"])
    
    # 如果这个组合还没被创建,先初始化分组结构
    if group_key not in grouped_teams:
        grouped_teams[group_key] = {
            "team": player["team"],
            "coach": player["coach"],
            "players": []
        }
    
    # 把当前球员的id和name添加到对应分组的players列表中
    grouped_teams[group_key]["players"].append({
        "id": player["id"],
        "name": player["name"]
    })

# 把字典的值转换成最终需要的列表格式
final_result = list(grouped_teams.values())

# 打印看看结果(用json格式化输出更清晰)
import json
print(json.dumps(final_result, indent=2))

代码解释

  1. 分组键的选择:用(team, coach)元组作为键,能保证每个团队+教练的组合都是唯一的,不会出现混淆。
  2. 初始化分组:当第一次遇到某个团队+教练组合时,我们创建一个包含team、coach和空players列表的条目。
  3. 添加球员:后续遇到同组合的球员,直接把他们的id和name追加到对应的players列表里。
  4. 转换格式:最后把字典的所有值提取出来转成列表,就是你想要的结构化数据啦。

进阶简化(Python 3.10+)

如果你用的是较新的Python版本,还可以用collections.defaultdict来简化初始化步骤,代码会更简洁:

from collections import defaultdict

players_data = [
    # 你的输入数据同上
]

grouped_teams = defaultdict(lambda: {"team": "", "coach": "", "players": []})

for player in players_data:
    group_key = (player["team"], player["coach"])
    # 第一次遇到该组合时,设置team和coach
    if not grouped_teams[group_key]["team"]:
        grouped_teams[group_key]["team"] = player["team"]
        grouped_teams[group_key]["coach"] = player["coach"]
    grouped_teams[group_key]["players"].append({"id": player["id"], "name": player["name"]})

final_result = list(grouped_teams.values())

运行以上代码,就能得到你期望的输出格式啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 22:17:43