0

我有一个我将要分析的列的列表。我不想回溯特定索引(例如 data[1][2]),而是想为列分配名称,然后循环遍历列的行以执行不同的任务。如何为列分配名称,然后这是引用它的正确格式吗?

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

3 回答 3

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]
于 2009-10-25T06:25:11.577 回答
2

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

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

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

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

于 2009-10-25T04:34:49.613 回答
0

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

varName=data[columnName]

对于对该列的后续访问,varName[rowName]应该做到这一点

于 2009-10-25T03:26:22.730 回答