[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()
делают много других вещей; поэтому я должен держать их отдельно.
Как мне написать код?