2013-07-25 85 views
1

我有兩列的CSV,第一列是專門用於項目中特定建築物的團隊。以第一欄作爲關鍵字讀取兩列CSV作爲關鍵碼

第二列是實際的建築物編號。

我在找的是第一列作爲關鍵字的字典,以及屬於該列表中的該團隊的建築物。

我已經嘗試了各種形式的csv.readercsv.DictReader以及不同的循環重寫數據到另一個字典,但我不能得到我想要的結構。

CSV:

team,bldg, 
3,204, 
3,250, 
3,1437, 
2,1440, 
1,1450, 

字典的結構將是如下:

dict["1"] = ["1450"] 
dict["2"] = ["1440"] 
dict["3"] = ["204", "250", "1437"] 
+0

請問您的數據具有尾隨','? – dawg

回答

0

這工作:

import csv 

result={} 
with open('/tmp/test.csv','r') as f: 
    red=csv.DictReader(f) 
    for d in red: 
     result.setdefault(d['team'],[]).append(d['bldg']) 

#results={'1': ['1450'], '3': ['204', '250', '1437'], '2': ['1440']} 
+0

這讀取一點清潔,不需要另一個導入... – Moon47

1

標準庫中的有用collections.defaultdict使得這一任務的短期工作:

import csv 
import collections as co 

dd = co.defaultdict(list) 
with open('/path/to/your.csv'),'rb') as fin: 
    dr = csv.DictReader(fin) 
    for line in dr: 
     dd[line['team']].append(line['bldg']) 

# defaultdict(<type 'list'>, {'1': ['1450'], '3': ['204', '250', '1437'], '2': ['1440']}) 

http://docs.python.org/2/library/collections.html#collections.defaultdict

第一個參數提供了default_factory 屬性的初始值;它默認爲None