命名一列,然后使用名称而不是索引来调用项目

时间:2009-10-25 03:07:23

标签: python names

我有一份我将要分析的列列表。我没有回溯到像[1] [2]这样的特定索引,而是想为列指定一个名称,然后遍历列的行以执行不同的任务。如何为列指定名称,然后这是引用它的正确格式?

for x in range (len(data)):  
    if [column_name][x] .... 

3 个答案:

答案 0 :(得分:3)

有很多不同的方法可以做到这一点。如果您在编写代码时知道名称和列之间的关联,那么到目前为止最简单的方法是:

for row in data:
   (foo, bar, baz, bat) = row

...假设您不需要更新row(和data)。

如果需要更新行,则将值复制到变量将不起作用。您需要通过索引操作项目。在这种情况下,aviraldg的方法最简单:

(foo, bar, baz, bat) = range(4)
for row in data:
   row[foo] = row[bar]

如果要通过包含其名称的字符串引用列,则需要将该行复制到其键为列名的字典中。然后,当你完成操作字典时,你需要更新原始列表,或者用新的列表替换它(这是代码所做的):

columns = ("foo", "bar", "baz", "bat")
for i in range(len(data)):
   d = dict(zip(columns, data[i]))
   d["foo"] = d["bar"]
   data[i] = [d[col] for col in columns]

答案 1 :(得分:2)

使用名称而不是整数来访问数据的最简单方法是使用字典

data = {'pig':[1, 2], 'cow':[3, 4], 'dog':[5,6]}

if data in range(2):
    if data['dog'][1]==4:...

还有其他方法。例如,您可以创建一个类并覆盖__getitem__;或者您可以将变量名称分配给二维数组中的列号,如dog=2等;这完全取决于你想要做什么。

答案 2 :(得分:0)

我相信你想要做的是将一个列存储在一个变量中然后引用它,而不是总是使用下标。很简单:

varName=data[columnName]

对于对该列的后续访问,varName[rowName]应该执行该操作