如何在终端中以表格格式显示字典数据



我正试图解决一个简单的用例,即我需要在终端中以表格样式显示数据——不需要花哨的表,但不知何故,它会发出类似的表。

这是我的密码。

score = {'rounds_0': {'jack': 9, 'joe': 8}, 'rounds_1': {'jack': 11, 'joe': 13}}
players_name = ["jack","joe"]
for each_rounds in range(0,2):
print(f"""              ********Round {each_rounds + 1}****""", end='')
print()
for player, each_rounds in zip(players_name, range(0,2) ):
print(player,score.get(f'rounds_{each_rounds}').get(player))

目前我的输出如下

********Round 1****              ********Round 2****
jack 9
joe 13

我试图在Round 1列下包含round_0dict值,在round_1中包含类似的Round 2像这样,如果可能的话,每行的总和

********Round 1****              ********Round 2****          *****Total*****
jack                 9                                  11                       20
joe                  8                                  13                       21                    

我真的尝试了一些for循环的概念,但不知道我是如何做到的,因为我是python的初学者,任何帮助都会非常棒。

您正在一起迭代玩家和轮次,但您需要做的是迭代玩家,然后为每个玩家轮次。为每个玩家生成一个分数列表,然后打印出来可能更容易:

score = {'rounds_0': {'jack': 9, 'joe': 8}, 'rounds_1': {'jack': 11, 'joe': 13}}
players = list(score['rounds_0'].keys())
rounds = range(len(score.keys()))
print(f"          {''.join(f' **** Round {rd} **** ' for rd in rounds)} **** Total ****")
for player in players:
scores = [score[f'rounds_{rd}'].get(player, 0) for rd in rounds]
print(f"{player:10s}{''.join(f'{s:^20d}' for s in scores)}{sum(scores):^15d}")

输出:

**** Round 0 ****  **** Round 1 ****  **** Total ****
jack               9                   11               20
joe                8                   13               21

相关内容

  • 没有找到相关文章