如何根据嵌套键更新嵌套字典值并统计团队总数?
需求说明
我们有如下嵌套字典和列表结构:
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
相关产品推荐
相关产品推荐

