In this article, we will discuss different ways to print line by line the contents of a dictionary or a nested dictionary in python.

As dictionary contains items as key-value pairs. So, first, let’s create a dictionary that contains student names and their scores i.e.

# A dictionary of student names and their score
student_score = {'Ritika': 5, 'Sam': 7, 'John': 10, 'Aadi': 8}

Now to print this dictionary, we directly pass it in the print function i.e.
print(student_score)

the output will be like,
{'Ritika': 5, 'Sam': 7, 'John': 10, 'Aadi': 8}

Although it printed the contents of the dictionary, all the key-value pairs printed in a single line. If we have big dictionaries, then it can be hard for us to understand the contents. Therefore, we should print a dictionary line by line.

Let’s see how to do that,

Print a dictionary line by line using for loop & dict.items()

dict.items() returns an iterable view object of the dictionary that we can use to iterate over the contents of the dictionary, i.e. key-value pairs in the dictionary and print them line by line i.e.

# Iterate over key/value pairs in dict and print them
for key, value in student_score.items():
    print(key, ' : ', value)

Output:
Ritika  :  5
Sam  :  7
John  :  10
Aadi  :  8

This approach gives us complete control over each key-value pair in the dictionary. We printed each key-value pair in a separate line.

Print a dictionary line by line by iterating over keys

We can iterate over the keys of a dictionary one by one, then for each key access its value and print in a separate line i.e.

# Iterate over the keys in dictionary, access value & print line by line
for key in student_score:
    print(key, ' : ', student_score[key])

Output:
Ritika  :  5
Sam  :  7
John  :  10
Aadi  :  8

Although by this approach we printed all the key value pairs line by line this is not an efficient method as compared to the previous one because to access one key-value pair, we are performing two operations.

Print a dictionary line by line using List Comprehension

In a single line using list comprehension & dict.items(), we can print the contents of a dictionary line by line i.e.

# Iterate over items in dict and print line by line
[print(key, value) for key, value in student_score.items()]

Output:
Ritika  :  5
Sam  :  7
John  :  10
Aadi  :  8

Print a dictionary line by line using json.dumps()

In python, json module provides a function json.dumps() to serialize the passed object to a json like string. We can pass the dictionary in json.dumps() to get a string that contains each key-value pair of dictionary in a separate line. Then we can print that string,

import json

# Print contents of dict in json like format
print(json.dumps(student_score, indent=4))

Output
{
    "Ritika": 5,
    "Sam": 7,
    "John": 10,
    "Aadi": 8
}

We passed the dictionary object and count of indent spaces in json.dumps(). It returned a json like formatted string. Remember to import the json module for this approach.

Now, what if we have a nested python dictionary?

Printing nested dictionaries line by line in python

Suppose we have a nested dictionary that contains student names as key, and for values, it includes another dictionary of the subject and their scores in the corresponding subjects i.e.

# Nested dictionary containing student names and their scores in separate subjects
student_score = {'Mathew': {'Math': 28,
                      'Science': 18,
                      'Econimics': 15},
            'Ritika': {'Math': 19,
                        'Science': 20,
                        'Econimics': 19},
             'John': {'Math': 11,
                      'Science': 22,
                      'Econimics': 17}}

If print this dictionary by passing it to the print() function,
print(student_score)

Then the output will be like,
{'Mathew': {'Math': 28, 'Science': 18, 'Econimics': 15}, 'Ritika': {'Math': 19, 'Science': 20, 'Econimics': 19}, 'John': {'Math': 11, 'Science': 22, 'Econimics': 17}}

It printed all the contents in a single line. Therefore, it is tough to understand the contents. Now to print the contents of a nested dictionary line by line, we need to do double iteration i.e.
# Iterate over key / value pairs of parent dictionary
for key, value in student_score.items():
    print(key, '--')
    # Again iterate over the nested dictionary
    for subject, score in value.items():
        print(subject, ' : ', score)

Output:
Mathew --
Math  :  28
Science  :  18
Econimics  :  15
Ritika --
Math  :  19
Science  :  20
Econimics  :  19
John --
Math  :  11
Science  :  22
Econimics  :  17

We first iterated over the items, i.e. key/value pairs of the dictionary, and for each pair printed the key. As value field is another dictionary, so we again iterated over the key-value pairs in this dictionary and printed its contents i.e. key/value pairs in separate lines.

Print nested dictionary line by line using json.dumps()

We can do this in a single line using json module’s dumps() function i.e.

import json

print(json.dumps(student_score, indent=4))

Output:
{
    "Mathew": {
        "Math": 28,
        "Science": 18,
        "Econimics": 15
    },
    "Ritika": {
        "Math": 19,
        "Science": 20,
        "Econimics": 19
    },
    "John": {
        "Math": 11,
        "Science": 22,
        "Econimics": 17
    }
}

The complete example is as follows,
import json


def main():
    # A dictionary of student names and their score
    student_score = {'Ritika': 5, 'Sam': 7, 'John': 10, 'Aadi': 8}

    print(student_score)

    print('*** Print a dictionary line by line using for loop & dict.items() ****')

    # Iterate over key/value pairs in dict and print them
    for key, value in student_score.items():
        print(key, ' : ', value)

    print('*** Print a dictionary line by line by iterating over keys ***')

    # Iterate over the keys in dictionary, access value & print line by line
    for key in student_score:
        print(key, ' : ', student_score[key])

    print('*** Print a dictionary line by line using List Comprehension ***')

    # Iterate over items in dict and print line by line
    [print(key, value) for key, value in student_score.items()]

    print('*** Print a dictionary line by line using json.dumps() ***')

    # Print contents of dict in json like format
    print(json.dumps(student_score, indent=4))


    print('***** Print Nested Dictionaries line by line in python ******')

    # Nested dictionary containing student names and their scores in separate subjects
    student_score = {'Mathew': {'Math': 28,
                          'Science': 18,
                          'Econimics': 15},
                'Ritika': {'Math': 19,
                            'Science': 20,
                            'Econimics': 19},
                 'John': {'Math': 11,
                          'Science': 22,
                          'Econimics': 17}}

    print(student_score)

    print('** Print line by line using nested for loop **')

    # Iterate over key / value pairs of parent dictionary
    for key, value in student_score.items():
        print(key, '--')
        # Again iterate over the nested dictionary
        for subject, score in value.items():
            print(subject, ' : ', score)

    print('** Print nested dictionary line by line using json.dumps() **')

    print(json.dumps(student_score, indent=4))


if __name__ == '__main__':
    main()

Output:
{'Ritika': 5, 'Sam': 7, 'John': 10, 'Aadi': 8}
*** Print a dictionary line by line using for loop & dict.items() ****
Ritika  :  5
Sam  :  7
John  :  10
Aadi  :  8
*** Print a dictionary line by line by iterating over keys ***
Ritika  :  5
Sam  :  7
John  :  10
Aadi  :  8
*** Print a dictionary line by line using List Comprehension ***
Ritika 5
Sam 7
John 10
Aadi 8
*** Print a dictionary line by line using json.dumps() ***
{
    "Ritika": 5,
    "Sam": 7,
    "John": 10,
    "Aadi": 8
}
***** Print Nested Dictionaries line by line in python ******
{'Mathew': {'Math': 28, 'Science': 18, 'Econimics': 15}, 'Ritika': {'Math': 19, 'Science': 20, 'Econimics': 19}, 'John': {'Math': 11, 'Science': 22, 'Econimics': 17}}
** Print line by line using nested for loop **
Mathew --
Math  :  28
Science  :  18
Econimics  :  15
Ritika --
Math  :  19
Science  :  20
Econimics  :  19
John --
Math  :  11
Science  :  22
Econimics  :  17
** Print nested dictionary line by line using json.dumps() **
{
    "Mathew": {
        "Math": 28,
        "Science": 18,
        "Econimics": 15
    },
    "Ritika": {
        "Math": 19,
        "Science": 20,
        "Econimics": 19
    },
    "John": {
        "Math": 11,
        "Science": 22,
        "Econimics": 17
    }
}

Join a list of 2000+ Programmers for latest Tips & Tutorials