2012-08-06 26 views
2

我有一个名为“archive”的csv文件。它作为读者开放。我希望为csv文件中的每一行创建一个字典,其值(k,v){row[0]+row[2]:row[7]}组成。必须有一个简单的直接方法将此csv转换为字典,其中k = row[0]+row[2]v = row[7]将csv中的选定列转换为字典

# open archive reader 
farchive = open ("wv5archive.csv","rb") 
archive = csv.reader(farchive, delimiter=',') 

for rows in archive: 
    arch_dict = {rows[0]+rows[2]:rows[7]} 

print arch_dict 

回答

1

做到这一点,最简单的方法是使用字典理解:如果您使用的是旧版本的Python

arch_dict = {row[0]+row[2]: row[7] for row in archive} 

arch_dict = {} 
for row in archive: 
    arch_dict[row[0]+row[2]] = rows[7] 
+0

你可以写修真预2.7作为'dict(((行[0],行[2]),行[7])存档行)' - 比第二个选项更优雅(或行[0] +行[2] - 无论) – 2012-08-06 16:09:09

+0

@JonClements:是的,但我不知道它是否更优雅... – 2012-08-06 16:10:51

+0

“我的眼睛”。你的回答(对我来说)似乎意味着你必须创建一个空字典,并且如果不使用2.7+,则迭代分配键/ val,并且我们同意情况并非如此......无论如何,我的+1。 – 2012-08-06 16:23:46