2009-10-25 36 views
0

我有一列我将分析的列表。我不想回溯到诸如data [1] [2]这样的特定索引,而是想为列指定一个名称,然后循环遍历列的不同任务。我如何为列指定一个名称,然后这是返回它的正确格式?命名一列,然后用名称而不是索引调用项目

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

这是在Python?需要更多信息... – 2009-10-25 03:10:29

+0

是的,对不起,它是python。我试图使用提供的解决方案,但没有运气。我收到错误,说我不能用字符串进行索引。我无法分配列名称,然后成功引用它。数据来自txt文档。我的第二列是ID,第三列是体重,第四列是身高。我如何命名它们并返回? – 2009-10-26 02:17:46

回答

0

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

varName=data[columnName] 

对于后续访问该列,varName[rowName]应该做的伎俩

2

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

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

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

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

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] 
相关问题