我有一份我将要分析的列列表。我没有回溯到像[1] [2]这样的特定索引,而是想为列指定一个名称,然后遍历列的行以执行不同的任务。如何为列指定名称,然后这是引用它的正确格式?
for x in range (len(data)):
if [column_name][x] ....
答案 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]
应该执行该操作