python - 打印带标题的表格时替代 locals()

标签 python python-3.x list-comprehension locals

[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() 还执行许多其他操作;所以我必须将它们分开。

代码应该怎么写?

最佳答案

class Columns:
    pass

def f(row_number):
    c = Columns()
    c.power = retrieve_avg_power(row_number) * 2.5
    c.speed = math.sqrt(power) / 2
    return c.__dict__

这还允许您指定哪些变量作为列,而不是在函数中临时存在。

关于python - 打印带标题的表格时替代 locals(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4067463/

相关文章:

python - 如何使用 Python 从 Windows 中的视频文件获取标题属性

python - 找到了哪种模式?

python - 在列表理解中递增 defaultdict (Python)

algorithm - Haskell 中的串行理解

python - 使用 pyodbc 从数据库中提取 SQL 脚本

python - 模型以字典形式查看,然后将其呈现为 html 表

python - 改变数组的一部分不起作用

python - 没有日期的时间增量

python - 带 Tweepy 的 StreamListener,TypeError

python - 如何检查对象在列表理解中是否不是 None?