我有一个我将要分析的列的列表。我不想回溯特定索引(例如 data[1][2]),而是想为列分配名称,然后循环遍历列的行以执行不同的任务。如何为列分配名称,然后这是引用它的正确格式吗?
for x in range (len(data)):
if [column_name][x] ....
有很多不同的方法可以做到这一点。如果您在编写代码时知道名称和列之间的关联,那么到目前为止最简单的方法是:
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]
使用名称而不是整数来访问数据的最简单方法是使用字典
data = {'pig':[1, 2], 'cow':[3, 4], 'dog':[5,6]}
if data in range(2):
if data['dog'][1]==4:...
还有其他方法。例如,您可以创建一个类并覆盖__getitem__
;或者您可以将变量名称分配给二维数组中的列号,例如dog=2
等;这完全取决于你想要做什么。
我相信您想要做的是将列存储在变量中然后引用它,而不是始终使用下标。很简单:
varName=data[columnName]
对于对该列的后续访问,varName[rowName]
应该做到这一点