我有一个循环收集的数据,并存储在只包含相同数据类型的单独列表中(例如,只包含字符串,只有浮点数),如下所示:
names = ['bar', 'chocolate', 'chips']
weights = [0.05, 0.1, 0.25]
costs = [2.0, 5.0, 3.0]
unit_costs = [40.0, 50.0, 12.0]
我已将这些列表视为"列"一个表,并希望将它们打印为格式化的表,看起来像这样:
Names | Weights | Costs | Unit_Costs
----------|---------|-------|------------
bar | 0.05 | 2.0 | 40.0
chocolate | 0.1 | 5.0 | 50.0
chips | 0.25 | 3.0 | 12.0
我只知道如何在表行中横向打印列表中的数据,我已经在线查看(以及在此站点上)以获得有关此问题的一些帮助,但是我只是设法找到帮助它在python 2.7中工作而不是3.5.1这就是我正在使用的
我的问题是:
如何从上面的4个列表中获取条目以打印到如上所示的表格中。
上述列表中的每个项目索引都是关联的(即4个列表中的条目[0]与相同的项目相关联; bar,0.05,2.0,40.0)。
答案 0 :(得分:6)
使用texttable
绘制一些有趣的表格。
import texttable as tt
tab = tt.Texttable()
headings = ['Names','Weights','Costs','Unit_Costs']
tab.header(headings)
names = ['bar', 'chocolate', 'chips']
weights = [0.05, 0.1, 0.25]
costs = [2.0, 5.0, 3.0]
unit_costs = [40.0, 50.0, 12.0]
for row in zip(names,weights,costs,unit_costs):
tab.add_row(row)
s = tab.draw()
print (s)
<强>结果强>
+-----------+---------+-------+------------+
| Names | Weights | Costs | Unit_Costs |
+===========+=========+=======+============+
| bar | 0.050 | 2 | 40 |
+-----------+---------+-------+------------+
| chocolate | 0.100 | 5 | 50 |
+-----------+---------+-------+------------+
| chips | 0.250 | 3 | 12 |
+-----------+---------+-------+------------+
您可以使用此命令texttable
安装pip install texttable
。
答案 1 :(得分:4)
这是一个小的实现,可以在基本的python中执行你想要的(没有特殊的模块)。
names = ['bar', 'chocolate', 'chips']
weights = [0.05, 0.1, 0.25]
costs = [2.0, 5.0, 3.0]
unit_costs = [40.0, 50.0, 12.0]
titles = ['names', 'weights', 'costs', 'unit_costs']
data = [titles] + list(zip(names, weights, costs, unit_costs))
for i, d in enumerate(data):
line = '|'.join(str(x).ljust(12) for x in d)
print(line)
if i == 0:
print('-' * len(line))
输出:
names |weights |costs |unit_costs
---------------------------------------------------
bar |0.05 |2.0 |40.0
chocolate |0.1 |5.0 |50.0
chips |0.25 |3.0 |12.0
答案 2 :(得分:0)
访问docs.python.org/3/library/functions.html#zip(cdarke提供的链接)后
我设法找到了我需要的解决方案:
使用zip方法我创建了一个关联数据的新摘要列表:
# sort into rows of associated data and convert to list
rows = zip(names, weights, costs, unit_costs)
summary = list(rows)
一旦我有了新的摘要列表,我就开始对用户进行排序并打印出来(但是,我稍后会处理格式化):
# Sort Alphabetically and print
summary.sort()
print()
print("*** Results shown below (alphabetically) ***")
print("Name\t\tWeight\tCost\tUnit Cost")
for item in summary:
print("")
for data in item:
print(data, "\t", end='')
输出如下:
*** Results shown below (alphabetically) ***
Name Weight Cost Unit Cost
bar 0.05 2.0 40.0
chips 0.25 3.0 12.0
chocolate 0.1 5.0 50.0
感谢cdarke的帮助:)