2015-11-08 127 views
0

我知道還有很多其他問題與答案,但我想知道如何將CSV文件讀入嵌套字典。因此,它會從事情是這樣的:Python:將CSV文件轉換爲不帶csv模塊的字典

'''"YEAR","GENDER","NAME","COUNT" 
    "2011","FEMALE","A","100" 
    "2012","FEMALE","A","50" 
    "2012","FEMALE","B","10" 
    "2012","FEMALE","C","10" 
    "2012","FEMALE","D","5" 
    "2013","FEMALE","A","1000" 
    ''' 

爲了這樣的事情:

{('B', 'FEMALE'): {2012: (10, None)}, 
('C', 'FEMALE'): {2012: (10, None)}, 
('A', 'FEMALE'): {2011: (100, None), 
        2012: (50, None), 
        2013: (1000, None)}, 
('D', 'FEMALE'): {2012: (5, None)}} 

但我需要做的是不導入任何東西,所以我不能使用CSV模塊。這是一個普遍的例子;我需要代碼來處理可能比這個更長或更短的多個案例。

(有11個文件總計,這是其中之一,這裏的文字,正是因爲它是在文件中:

"YEAR","GENDER","NAME","COUNT" 
    "2011","FEMALE","A","100" 
    "2012","FEMALE","A","50" 
    "2012","FEMALE","B","10" 
    "2012","FEMALE","C","10" 
    "2012","FEMALE","D","5" 
    "2013","FEMALE","A","1000" 
+2

如果你不介意我問,爲什麼不能 –

回答

1
answer = {} 
with open('path/to/file') as infile: 
    infile.readline() # we don't care about the header row 
    for line in infile: 
     year, gender, name, count = (s.strip('"') for s in line.split(',')) 
     key = (name, gender) 
     if key not in answer: answer[key] = {} 
     answer[key][int(year)] = (int(count), None) 
+0

爲什麼downvote? – inspectorG4dget

+0

對不起,新的這一點,沒有注意到小的添加評論按鈕我downvoted,因爲代碼只給了我值的錯誤,當我測試它 – user96

+0

@ jtdurb96:如果你可以告訴我你的錯誤,我很樂意更新我的答案 – inspectorG4dget