2015-05-16 119 views
-1

這是CSV看起來像爲什麼python只能讀取csv的最後一行?

2015-05-16,3.99 2015-05-16,4.0

這裏是代碼,它試圖將CSV轉換成字典:

with open('log.csv') as filename: 
    reader = csv.reader(filename,delimiter=',') #fieldnames=['Date','GPA'] 
    display = {row[0]:row[1] for row in reader} 
    print display 

輸出:

$python test.py 
{'2015-05-16': 4.0} 

這它應該是這樣的:

$ python test.py 
{'2015-05-16':3.99,'2015-05-16': 4.0} 

回答

2

你不能這樣做:一個字典需要有不同的密鑰,並且你的CSV有兩個具有相同密鑰的條目(5月16日)。

如果更改log.csv,你的代碼按預期工作:

{'2015-05-16': '3.99', '2015-05-17': '4.0'} 

你可以做一些事情,使鍵不同,比如添加行號:

display = { (row[0], i):row[1] for i, row in enumerate(reader) } 

將輸出

{('2015-05-16', 0): '3.99', ('2015-05-16', 1): '4.0'} 

或者你可以使用一個數組類型的字典的(一ND得到不同的結果,但現在所有的數據):

display = [ { row[0]:row[1] } for row in reader ] 

[{'2015-05-16': '3.99'}, {'2015-05-16': '4.0'}] 

或者你可以嘗試和所有相同鍵的值加在一起,例如

{ 
    '2015-05-16': [ '3.99', '4.0' ], 
    '2015-05-17': [ '3.14159' ] 
} 

但是,否則,詞典中的每個相同的鍵將覆蓋以前的任何事件,以便您總是隻能看到最後一個。

0

當您嘗試在字典中插入現有密鑰的不同值時,它會覆蓋以前的值

相關問題