Python - 将字典打印为带标题的水平表格

新手上路,请多包涵

我有一本字典:

 import math
import random

d = {1: ["Spices", math.floor(random.gauss(40, 5))],
    2: ["Other stuff", math.floor(random.gauss(20, 5))],
    3: ["Tea", math.floor(random.gauss(50, 5))],
    10: ["Contraband", math.floor(random.gauss(1000, 5))],
    5: ["Fruit", math.floor(random.gauss(10, 5))],
    6: ["Textiles", math.floor(random.gauss(40, 5))]
}

我想把它打印出来,以便它与标题很好地对齐。我可以将标题添加到字典中并始终确保它们排在最前面吗?我已经看到了几种垂直方式,但我想让它的最大列宽接近最大 str() 或 int()。

例子:

钥匙__________________标签__________________________编号

1____________________________________________________________________________________________________________________________________________________________________________________________ 香料

2________________________________________________________16 其他内容

ETC

显然我什至无法在这个编辑器中手动执行此操作,但我希望这个想法能被接受。我也不太想要 __ 。只是一个占位符。

谢谢大家。

原文由 Faller 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 364
2 个回答

我更喜欢 pandas DataFrame

 import pandas as pd
data = {'Name': ['a', 'b', 'c'], 'Age': [10, 11, 12]}
df = pd.DataFrame(data)
print(df)

输出:

   Name  Age
0    a   10
1    b   11
2    c   12

在此处 查看有关打印漂亮数据框的更多信息

原文由 vivek_reddy 发布,翻译遵循 CC BY-SA 4.0 许可协议

您可以 在 python2 中使用字符串格式

     print "{:<8} {:<15} {:<10}".format('Key','Label','Number')
    for k, v in d.iteritems():
        label, num = v
        print "{:<8} {:<15} {:<10}".format(k, label, num)

或者, python3 中的字符串格式

     print("{:<8} {:<15} {:<10}".format('Key','Label','Number'))
    for k, v in d.items():
        label, num = v
        print("{:<8} {:<15} {:<10}".format(k, label, num))

输出:

 Key      Label           Number
1        Spices          38.0
2        Other stuff     24.0
3        Tea             44.0
5        Fruit           5.0
6        Textiles        37.0
10       Contraband      1000.0

原文由 Ashwini Chaudhary 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题