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

如何根据嵌套键更新嵌套字典值并统计团队总数?

需求说明

我们有如下嵌套字典和列表结构:

MyDict = {'Team1': {'John' : 0, 'Mary' : 0},
          'Team2': {'Steven' :  0, 'Gwen' : 0,'Fred' : 0},
          'Team3': {'Louise' : 0, 'Alice' : 0, 'Jim' : 0},
          'Team4': {'Paul' : 0, 'George' : 0},
          'Team5': {'Tracey' : 0}}

MyList = ['John', 'Gwen', 'Jim', 'George', 'John', 'Gwen', 'Alice', 'Frank', 'John', 'Gwen', 'Frank', 'John', 'Gwen', 'Tracey']

需要完成两项任务:

  • 统计MyList中每个成员的出现次数,更新MyDict中对应成员的数值
  • 计算并打印每个团队的总数值

预期结果

更新后的嵌套字典:

MyDict =   {'Team1': {'John' : 4, 'Mary' : 0},
            'Team2': {'Steven' :  0, 'Gwen' : 4,'Fred' : 0},
            'Team3': {'Louise' : 0, 'Alice' : 1, 'Jim' : 1},
            'Team4': {'Paul' : 0, 'George' : 1},
            'Team5': {'Tracey' : 1}}

打印的团队总数值:

Team1: 4
Team2: 4
Team3: 2
Team4: 1
Team5: 1

解决方案

可以通过以下Python代码实现需求:

from collections import Counter

# 统计列表中成员的出现次数
member_counts = Counter(MyList)

# 更新嵌套字典中的成员数值
for team, members in MyDict.items():
    for name in members:
        members[name] = member_counts.get(name, 0)

# 计算并打印各团队总数值
for team, members in MyDict.items():
    total = sum(members.values())
    print(f"{team}: {total}")

代码说明

  • 借助collections.Counter可以快速统计列表元素的出现频次,比手动遍历计数更高效
  • 遍历嵌套字典的层级结构,用统计结果覆盖成员的初始值,不存在的成员保持0
  • 最后通过sum()计算每个团队的数值总和并打印输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 23:35:48