如何读取2列csv文件并创建字典?

时间:2016-10-24 21:29:50

标签: python python-2.7 csv dictionary

例如,给出以下csv

ID, type
1 , A
2 , B
3 , C

它应该生成一个看起来像这样的字典

{'1':A, '2':B, '3':C}

这是我迄今为止所拥有的内容,但它将整个列与1个字典相关联

import csv

reader = csv.DictReader(open('TIS_annotation.csv'))
result = {}

for row in reader:
    for column, value in row.iteritems():
        result.setdefault(column, []).append(value)
print result

3 个答案:

答案 0 :(得分:3)

当您遍历row中的每个reader时,row变量包含为字典创建新条目所需的所有信息。你可以简单地写

for row in reader:
    result[row['ID']] = row[' type']

制作你想要的词典。

答案 1 :(得分:3)

比你想象的要简单:

import csv

with open('TIS_annotation.csv') as f:
    next(f)  # Skip the header
    reader = csv.reader(f, skipinitialspace=True)
    result = dict(reader)
    print result

输出:

{'1 ': 'A', '3 ': 'C', '2 ': 'B'}

基本上,reader会产生一系列行,每行包含两个元素,将其输入dict并将其制作完成。

答案 2 :(得分:0)

其他方法是创建一个元组并将元组转换为字典,甚至可以用于txt文件。

for row in reader:
    ID = row[0] 
    data_type = row[1]
    myTuples.append(tuple([ID, data_type]))

result = dict(myTuples)
print result

resuling:

  

{'1 ': ' A', '3 ': ' C', '2 ': ' B', 'ID': ' type'}

     

您可以在阅读数据/ csv时跳过标题或第一行,以便' ID':'类型' 不会出现在dict中。

最短路径跳过第一行并附加行的位置而不创建 ID 类型变量:

next(f) #for skipping first row in the file
myTuples = [] #store tuples from col1 and col2
for row in reader:
    myTuples.append(tuple([row[0], row[1]])) #append col1 and col 2 to myTuples

result = dict(myTuples)
print result

所得:

  

{' 1':' A',' 3':' C',' 2':' B'}