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

Python遍历嵌套字典并显示键值对问题求助

解决嵌套字典遍历问题

先给你指出原代码的几个核心问题:

  • 第二个for循环写在了外层循环外面,导致只会处理最后一个球员的信息,还会抛出ValueError——因为dict.items()返回的是(键, 值)二元组,用x,y,z拆包完全错误。
  • 打印逻辑搞混了,比如print("Player = {}".format(x))里的x是键"Player",你应该打印对应的值才对。
  • 字典里的码数字段键大小写不统一(有的是yards有的是Yards),和你想要的输出格式不匹配。

下面是修正后的代码:

stats = {1: {"Player": "Derrick Henry", "yards": 870, "TD": 9}, 
         2: {"Player": "Nick Chubb", "Yards": 841, "TD": 10}, 
         3: {"Player": "Saquon Barkley", "Yards": 779, "TD": 5}}

# 遍历外层字典:player_num是球员编号,player_info是对应的信息字典
for player_num, player_info in stats.items():
    # 打印球员编号标题
    print(f"Player{player_num}")
    # 遍历内层字典的每个属性键值对
    for attr, value in player_info.items():
        # 统一码数字段的输出格式为小写yards
        if attr.lower() == "yards":
            print(f"yards={value}")
        else:
            print(f"{attr}={value}")
    # 每个球员信息后加空行分隔(可选)
    print()

运行后输出结果:

Player1
Player=Derrick Henry
yards=870
TD=9

Player2
Player=Nick Chubb
yards=841
TD=10

Player3
Player=Saquon Barkley
yards=779
TD=5

关键细节说明:

  1. 嵌套循环结构:把内层遍历球员信息的循环放到外层循环内部,确保每个球员的编号和信息一一对应处理。
  2. 正确拆包items():dict.items()返回的是二元组,用attr, value接收键和值才符合逻辑。
  3. 字段名统一:用attr.lower()把键转成小写,不管原字典里是yards还是Yards,输出都统一为yards=xxx,匹配你要的格式。
  4. f-string格式化:比format()更简洁直观,Python 3.6及以上版本都支持。

注:你示例里的输出存在笔误(比如把Nick Chubb写成Nnikki Chubb、码数错误),上面代码是基于你提供的原始字典数据输出的正确结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 08:05:20