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
关键细节说明:
- 嵌套循环结构:把内层遍历球员信息的循环放到外层循环内部,确保每个球员的编号和信息一一对应处理。
- 正确拆包
items():dict.items()返回的是二元组,用attr, value接收键和值才符合逻辑。 - 字段名统一:用
attr.lower()把键转成小写,不管原字典里是yards还是Yards,输出都统一为yards=xxx,匹配你要的格式。 - f-string格式化:比
format()更简洁直观,Python 3.6及以上版本都支持。
注:你示例里的输出存在笔误(比如把Nick Chubb写成Nnikki Chubb、码数错误),上面代码是基于你提供的原始字典数据输出的正确结果。
内容的提问来源于stack exchange,提问作者lui
相关产品推荐
相关产品推荐

