2014-06-05 150 views
-1

現在,當我需要所有行時,data和filenameVariable會打印最後一行。我嘗試過.append,但沒有奏效。我還能用什麼?字典在Python中追加

這是我的工作數據:

someCSVfile.csv|cust_no,0|streetaddr,1|city,2|state,3|zip,4|phone_home,5|firstname,6|lastname,7|status,9| 
    someCSVfile1.csv|cust_no,0|streetaddr,1|city,2|state,3|zip,4|phone_home,5|firstname,6|lastname,7|status,9| 

下面是到目前爲止的代碼:

import csv 
reader = csv.reader(open('match_log.txt','rb'), dialect='excel', delimiter='|') 

data = {} 

for row in reader: 
    filenameVariable = row[0] 
    data = dict(item.split(',') for item in row[1:]) 

print data 
print filenameVariable 

#right now its taking the final row. I need all rows 
+0

輸出什麼數據結構,你找誰?字典列表?字典詞典(關鍵是什麼)?目前,您在每次迭代時都會創建一個新字典,但不要對它做任何事情。 – jonrsharpe

+0

**如何** .append()不起作用?你在這裏每循環迭代一次用一個新字典替換'data';你有沒有嘗試創建一個列表並附加到該列表? –

回答

0

的問題是要覆蓋data在CSV每一行。相反,所有你需要做的是有row[0]作爲data字典的關鍵:

import csv 
reader = csv.reader(open('match_log.txt','rb'), dialect='excel', delimiter='|') 

filenameVariable = [] 
data = {} 

for row in reader: 
    filenameVariable.append(row[0]) 
    data[row[0]] = dict(item.split(',') for item in row[1:]) 

print data 
print filenameVariable 
+0

這個工程!但是如果我不希望row [0]作爲數據字典中的鍵,並且我希望數據字典獨立存在。我應該將數據變量放入列表中嗎? – pHorseSpec

+0

是的,你可以做到這一點,並有一個獨立的'dict'對象列表。 – BeetDemGuise