Using the pandas module you can print a nested dictionary as a table in Python. Or you can use the tabulate
library, which is not part of the Python standard library, so you’ll need to install it first using pip
.
Example print nested dictionary as a table in Python
Simple example code. The df.fillna(0)
replaces missing values with 0.
import pandas as pd
data = {'bin1': {'A': 14545,
'B': 18579,
'C': 5880,
'D': 20771,
'E': 404396},
'bin2': {'A': 13200,
'D': 16766,
'E': 200344},
}
df = pd.DataFrame(data).T
df.fillna(0, inplace=True)
print(df)
Output:
Another example
You can use pandas.DataFrame.from_dict
with orient=index
.
import pandas as pd
student = {
"student1": {
"Name": "Eddy",
"Grade": 1,
"Math": 78,
"English": 65,
"Physics": 89,
"Chemistry": 80
},
"student2": {
"Name": "Jim",
"Grade": 2,
"Math": 89,
"English": 65,
"Physics": 87,
"Chemistry": 76
},
"student3": {
"Name": "Jane",
"Grade": 3,
"Math": 87,
"English": 97,
"Physics": 75,
"Chemistry": 64
},
}
df = pd.DataFrame.from_dict(student, orient='index').reset_index(drop=True)
print(df)
Output:
Name Grade Math English Physics Chemistry
0 Eddy 1 78 65 89 80
1 Jim 2 89 65 87 76
2 Jane 3 87 97 75 64
Source: stackoverflow.com
For a markdown table
Use pandas.DataFrame.to_markdown()
print(df.to_markdown(index=False))
Output:
| Name | Grade | Math | English | Physics | Chemistry |
|:-------|--------:|-------:|----------:|----------:|------------:|
| Eddy | 1 | 78 | 65 | 89 | 80 |
| Jim | 2 | 89 | 65 | 87 | 76 |
| Jane | 3 | 87 | 97 | 75 | 64 |
Use the following Python code to print a nested dictionary as a table:
from tabulate import tabulate
# Sample nested dictionary
data = {
'Alice': {'Age': 25, 'City': 'New York'},
'Bob': {'Age': 30, 'City': 'San Francisco'},
'Charlie': {'Age': 22, 'City': 'Los Angeles'}
}
# Convert the nested dictionary to a list of dictionaries
table_data = [{key: value for key, value in entry.items()} for entry in data.values()]
# Get the table headers from the first dictionary
headers = table_data[0].keys()
# Print the table using tabulate
print(tabulate(table_data, headers, tablefmt="grid"))
Do comment if you have any doubts or suggestions on this Python print dictionary topic.
Note: IDE: PyCharm 2021.3.3 (Community Edition)
Windows 10
Python 3.10.1
All Python Examples are in Python 3, so Maybe its different from python 2 or upgraded versions.