[Python 3.1]
编辑:原始代码中的错误。
我需要打印一张桌子。第一行应该是一个标题,它由制表符分隔的列名组成。以下行应包含数据(也是制表符分隔的)。
为了澄清,假设我有列“速度”、“功率”、“重量”。在我之前提出的相关问题的帮助下,我最初编写了以下代码:
column_names = ['speed', 'power', 'weight']
def f(row_number):
# some calculations here to populate variables speed, power, weight
# e.g., power = retrieve_avg_power(row_number) * 2.5
# e.g., speed = math.sqrt(power) / 2
# etc.
locals_ = locals()
return {x : locals_[x] for x in column_names}
def print_table(rows):
print(*column_names, sep = '\t')
for row_number in range(rows):
row = f(row_number)
print(*[row[x] for x in component_names], sep = '\t')
但后来我了解到我应该尽可能避免使用locals()
.
现在我被困住了。我不想多次键入所有列名的列表。我不想依赖这样一个事实,即我在其中创建的每个字典f()
都可能以相同的顺序遍历其键。而且我不想使用locals()
.
注意功能print_table()
和f()
做很多其他的东西;所以我必须把它们分开。
我应该如何编写代码?