我想垂直打印以下列表字典:
result = {'WeightedLevel': [388.850952, 716.718689, 1312.55957, 2405.087158, 4460.083984, 8543.792969, 18805.201172, 57438.140625, 1792.367554], 'Job': 'Desktop', 'LoadLevel': [0.212399, 0.393191, 0.727874, 1.347436, 2.494368, 4.617561, 8.548006, 15.824027, 1.0], 'Task': 'test', 'Failure': [2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0], 'Blocks': [7255.151855, 231.589661, 9.365415, 0.55364, 0.0504, 0.006408, 0.001204, 0.000842, 2.060041]}
所以它应该是这样的:
Job Task LoadLevel Blocks Failure WeightedLevel
Desktop test 4546543 4384284 0,46544564 0,1354385
474454 978456 2 9655
9655 55654 966 665
等等...
我已经尝试了一些我在网上找到的代码,但它们仍然水平打印结果:
for k, d in result.items():
print(k + ":", d)
和
print("\t".join(str(x) for x in result))
最佳答案
pretty-print 表格需要大量代码(table-recipe、pretty-table)。临时编写此类代码并不有趣;您不妨使用设计良好的模块。
如果你有pandas ,您可以将字典直接转储到 DataFrame 中,然后像这样打印它:
In [4]: import pandas as pd
In [5]: result = {'WeightedLevel': [388.850952, 716.718689, 1312.55957, 2405.087158, 4460.083984, 8543.792969, 18805.201172, 57438.140625, 1792.367554], 'Job': 'Desktop', 'LoadLevel': [0.212399, 0.393191, 0.727874, 1.347436, 2.494368, 4.617561, 8.548006, 15.824027, 1.0], 'Task': 'test', 'Failure': [2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0], 'Blocks': [7255.151855, 231.589661, 9.365415, 0.55364, 0.0504, 0.006408, 0.001204, 0.000842, 2.060041]}
In [6]: pd.DataFrame(result)
Out[6]:
Blocks Failure Job LoadLevel Task WeightedLevel
0 7255.151855 2 Desktop 0.212399 test 388.850952
1 231.589661 2 Desktop 0.393191 test 716.718689
2 9.365415 2 Desktop 0.727874 test 1312.559570
3 0.553640 2 Desktop 1.347436 test 2405.087158
4 0.050400 2 Desktop 2.494368 test 4460.083984
5 0.006408 2 Desktop 4.617561 test 8543.792969
6 0.001204 2 Desktop 8.548006 test 18805.201172
7 0.000842 2 Desktop 15.824027 test 57438.140625
8 2.060041 2 Desktop 1.000000 test 1792.367554
[9 rows x 6 columns]
下面是一种不使用第三方模块以类似表格的格式打印字典的方法:
import itertools as IT
result = {'WeightedLevel': [388.850952, 716.718689, 1312.55957, 2405.087158, 4460.083984, 8543.792969, 18805.201172, 57438.140625, 1792.367554], 'Job': 'Desktop', 'LoadLevel': [0.212399, 0.393191, 0.727874, 1.347436, 2.494368, 4.617561, 8.548006, 15.824027, 1.0], 'Task': 'test', 'Failure': [2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0], 'Blocks': [7255.151855, 231.589661, 9.365415, 0.55364, 0.0504, 0.006408, 0.001204, 0.000842, 2.060041]}
matrix = zip(*[value if isinstance(value, list) else IT.repeat(value) for key,value in result.items()])
print(''.join(['{:15}'.format(key) for key in result.keys()]))
for row in matrix:
print(''.join(['{:15}'.format(str(item)) for item in row]))
产量
Task Blocks LoadLevel Failure Job WeightedLevel
test 7255.151855 0.212399 2.0 Desktop 388.850952
test 231.589661 0.393191 2.0 Desktop 716.718689
test 9.365415 0.727874 2.0 Desktop 1312.55957
test 0.55364 1.347436 2.0 Desktop 2405.087158
test 0.0504 2.494368 2.0 Desktop 4460.083984
test 0.006408 4.617561 2.0 Desktop 8543.792969
test 0.001204 8.548006 2.0 Desktop 18805.201172
test 0.000842 15.824027 2.0 Desktop 57438.140625
test 2.060041 1.0 2.0 Desktop 1792.367554
关于python - 垂直打印列表字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23607664/