Вы можете использовать zip()
для создания столбцов:
for row in zip(*([key] + value for key, value in sorted(my_dict.items()))):
print(*row)
Демо:
>>> my_dict = {1:[1,2,3],4:[5,6,7],8:[9,10,11]}
>>> for row in zip(*([key] + value for key, value in sorted(my_dict.items()))):
... print(*row)
...
1 4 8
1 5 9
2 6 10
3 7 11
Это делает предположить, что списки значений все одинаковой длины; если не самая короткая строка будет определять максимальное количество напечатанных строк. Используйте itertools.zip_longest()
для печати более:
from itertools import zip_longest
for row in zip_longest(*([key] + value for key, value in sorted(my_dict.items())), fillvalue=' '):
print(*row)
Демо:
>>> from itertools import zip_longest
>>> my_dict = {1:[1,2,3],4:[5,6,7,8],8:[9,10,11,38,99]}
>>> for row in zip_longest(*([key] + value for key, value in sorted(my_dict.items())), fillvalue=' '):
... print(*row)
...
1 4 8
1 5 9
2 6 10
3 7 11
8 38
99
Вы можете использовать sep='\t'
для выравнивания столбцов по позиции табуляции.
Почему не использовать модуль 'pprint' для печати? –
Я хочу, чтобы ключи были заголовками, и когда словарь становится очень длинным, мне бы очень хотелось просмотреть его как таблицу. –