Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

How to show dictionary data in table format in terminal

I am trying to solve the simple usecase where I need to show data in terminal in tabular style not needed fancy table but somehow that emits like table.

here is my code.

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))

currently my output is as follows

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

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

I am trying to include round_0 dict value unders Round 1 column and similary Round 2 for round_1
like this and if possible sum of each row

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

I really tried some for loop concepts but can’t figure out how I do it as I am really beginner in python any help will be really great.

>Solution :

You’re iterating players and rounds together, but what you need to do is iterate players and then rounds for each player. It’s probably easier to generate a list of scores for each player and then print that:

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}")

Output:

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

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading