假设我有一本字典,例如:
my_dict = {1:[1,2,3],4:[5,6,7],8:[9,10,11]}
我希望能够打印它,所以它看起来像:
1 4 8
1 5 9
2 6 10
3 7 11
我实际上正在使用更大的字典,如果我能看到它们的外观会很好,因为当我只是说它们很难阅读时print(my_dict)
假设我有一本字典,例如:
my_dict = {1:[1,2,3],4:[5,6,7],8:[9,10,11]}
我希望能够打印它,所以它看起来像:
1 4 8
1 5 9
2 6 10
3 7 11
我实际上正在使用更大的字典,如果我能看到它们的外观会很好,因为当我只是说它们很难阅读时print(my_dict)
您可以使用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'
沿制表位对齐列。
>>> my_dict = {1:[1,2,3],4:[5,6,7],8:[9,10,11]}
>>> keys = my_dict.keys()
>>> print(*iter(keys), sep='\t')
8 1 4
>>> for v in zip(*(my_dict[k] for k in keys)): print(*v, sep='\t')
...
9 1 5
10 2 6
11 3 7