РЕДАКТИРОВАТЬ:
Я оставил код pandas ниже на случай, если вы хотите сослаться на него. В противном случае вот скрипт с форматированием строки для печати таблиц, которые вы запрашиваете. Вы можете попробовать поиграться с числами, чтобы скрипт соответствовал длинным именам, как в этом примере:
# your original data:
outer_name_dictionary = {'john': {'alexis': [5, 6], 'bonofide': [0, 4]}, 'jane doe': {'alex': [0, 1], 'bono': [0, 1]}}
# iterate over each outer dictionary:
for key, value in outer_name_dictionary.items():
# get inner dictionary:
inner_name_dictionary = value
# print the column headers, you can change the '10' to a larger number ...
# but do the same with the print function below:
print('%10s | col0 col1' %key)
print(' '*6 + '-'*18)
# iterate over ech inner dictionary:
for inner_key, inner_value in inner_name_dictionary.items():
# print the column values:
print('%10s | %4d %4d' %(inner_key, inner_value[0], inner_value[1]))
print()
Вывод:
john | col0 col1
------------------
alexis | 5 6
bonofide | 0 4
jane doe | col0 col1
------------------
alex | 0 1
bono | 0 1
Pandas решение:
import pandas as pd
# your original data:
name_dictionary = {'john': {'alex': [5, 6], 'bono': [0, 4]}, 'jane': {'alex': [0, 1], 'bono': [0, 1]}}
# iterate over each inner dictionary:
for name in name_dictionary:
# convert each inner dictionary to a dataframe:
name_dataframe = pd.DataFrame(name_dictionary[name])
# transpose dataframe:
name_dataframe = name_dataframe.T
# assign original name to name of columns in dataframe:
name_dataframe.columns.name = name
# rename columns:
name_dataframe = name_dataframe.rename(columns={
0 : 'col0',
1 : 'col1',
})
# print results:
print(name_dataframe)
print()