【发布时间】:2010-11-01 08:25:26
【问题描述】:
[Python 3.1]
编辑:原代码中的错误。
我需要打印一张表格。第一行应该是一个标题,它由制表符分隔的列名组成。以下行应包含数据(也是制表符分隔的)。
为了澄清,假设我有“速度”、“功率”、“重量”列。我最初在related question 的帮助下编写了以下代码:
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')
但后来我知道我应该avoid using locals() if possible。
现在我被困住了。我不想多次键入所有列名的列表。我不想依赖这样一个事实,即我在f() 中创建的每个字典都可能以相同的顺序遍历其键。而且我不想使用locals()。
请注意,print_table() 和 f() 函数还有很多其他功能;所以我必须把它们分开。
我应该如何编写代码?
【问题讨论】:
标签: python python-3.x list-comprehension locals