Python中如何更新嵌套字典?新手求助修正代码输出
修正嵌套字典更新的实现方案
你的代码核心问题是循环逻辑错误,且键值对方向不符合预期,以下是修正后的实现:
方法一:使用字典推导式(简洁写法)
players_score = {} names = ["ram", "shyam"] # 遍历每个回合(0和1) for k in range(2): # 为当前回合生成所有玩家的得分字典 round_scores = {name: k for name in names} # 将回合得分字典加入总字典 players_score[f'round_{k}'] = round_scores print(players_score)
方法二:普通循环构建(更易理解)
players_score = {} names = ["ram", "shyam"] for k in range(2): round_scores = {} # 为每个玩家设置当前回合的得分 for name in names: round_scores[name] = k players_score[f'round_{k}'] = round_scores print(players_score)
原代码问题分析
- 内层循环无效:原代码的
for _ in range(0,2)循环重复赋值同一个round_k键,最终只保留最后一次赋值的单个玩家键值对,没有实现所有玩家的得分记录。 - 键值对方向错误:原代码中
{k:name[k]}把回合索引作为键、玩家名作为值,和你预期的「玩家名为键、回合数为值」完全相反。
运行修正后的代码,就能得到你期望的输出:
{'round_0': {'ram': 0, 'shyam': 0}, 'round_1': {'ram': 1, 'shyam': 1}}
内容的提问来源于stack exchange,提问作者astro geek
相关产品推荐
相关产品推荐

