2009-10-25 40 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] 
相關問題