如何在Python中将列表格式化为表格

时间:2019-08-13 14:38:13

标签: python python-3.x list formatting format

我有两个单独的列表,希望将它们格式化为表格。

keys = ('banana', 'broccoli', 'beans', 'apple')
values = (5, 1, 1, 1)

在上面的列表中,它计算可用的水果数量。例如,有5根香蕉和1个西兰花。请注意,水果的名称具有不同的长度。最好是,我不想导入任何模块。有没有一种方法可以格式化这些列表,使其看起来像这样:

'Banana'   | 5
'Broccoli' | 1
'Beans'    | 1
'Apple'    | 1

我已经尝试使用此代码:

row_format ="{:>15}" * (len(items) + 1)
print(row_format.format("", *items))
for keys, values in zip(items, keys):
    print(row_format.format(values, *row))

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

keys = ('banana', 'broccoli', 'beans', 'apple')
values = (5, 1, 1, 1)

max_length = len(max(keys, key=len))

for k, v in zip(keys, values):
    print("{: <{width}} | {}".format(repr(k).title(), v, width=max_length + 2))

打印:

'Banana'   | 5
'Broccoli' | 1
'Beans'    | 1
'Apple'    | 1

答案 1 :(得分:0)

您可以使用:

width = max(len(w) for w in keys) 
print(''.join(f'{k:{width}} | {v}\n' for k, v in zip(keys, values)))

# output: 
# banana   | 5
# broccoli | 1
# beans    | 1
# apple    | 1