【问题标题】:Printing double digits from a nested dictionary从嵌套字典中打印两位数
【发布时间】:2021-11-28 19:12:03
【问题描述】:

我无法从嵌套字典中打印出一些值。我的嵌套字典如下所示:

player_statistics = {'Johny': {'Kills': '7', 'Assists': '11', 'Deaths': '14'},
                     'Alice': {'Kills': '5', 'Deaths': '7', 'Assists': '3'},
                     'Jim': {'Kills': '14', 'Deaths': '6', 'Assists': '9'}}

我应该像这样为每个玩家打印出每个信息类型:

Player statistics:

ALICE
Assists: 3
Deaths: 7
Kills: 5
------------
JIM
Assists: 9
Deaths: 6
Kills: 14
------------
JOHNY
Assists: 11
Deaths: 14
Kills: 7
------------

但由于某种原因,我最终得到了这样的结果,其中两位数的第二个数字转到下一行:

Player statistics:

ALICE:
Assists: 3
Deaths: 7
Kills: 5
------------
JIM
Assists: 9
Deaths: 6
Kills: 1
4
------------
JOHNY
Assists: 1
1
Deaths: 1
4
Kills: 7
------------

这是我的代码:

def main():

    player_statistics = {'Johny': {'Kills': '7', 'Assists': '11', 'Deaths': '14'},
                         'Alice': {'Kills': '5', 'Deaths': '7', 'Assists': '3'},
                         'Jim': {'Kills': '14', 'Deaths': '6', 'Assists': '9'}}
    
    print("Player statistics:")
    print()
    for player in sorted(player_statistics):
        print(player.upper())
        for stat_type in sorted(player_statistics[player]):
            print(stat_type, end=": ")
            for value in sorted(player_statistics[player][stat_type]):
                print(value)
        print("------------")


if __name__ == "__main__":
    main()

我认为问题是由第 12 行的格式引起的。为什么它会这样工作,而不是仅仅将完整的两位数值提供给 stat_type 行的末尾?另外,我怎样才能让它正常工作?

【问题讨论】:

  • 'value' 是 str 类型,您只需遍历该字符串的每个字符,因此每个数字都打印在不同的行上
  • @ccre 我试图在打印之前将值赋值为整数:value = int(value),但它仍然导致相同的后果?我的编码程序有问题还是我分配错了?

标签: python for-loop data-structures nested formatting


【解决方案1】:

而不是这个:

for stat_type in sorted(player_statistics[player]):
    print(stat_type, end=": ")
    for value in sorted(player_statistics[player][stat_type]):
        print(value)

应该是这样的:

for stat_type in sorted(player_statistics[player]):
    print(f"{stat_type}: {player_statistics[player][stat_type]}")

【讨论】:

  • 成功了,谢谢你的帮助。
猜你喜欢
  • 1970-01-01
  • 2018-09-12
  • 2020-02-13
  • 2021-06-26
  • 2021-06-01
  • 2019-08-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多