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

Posted

技术标签:

【中文标题】如何读取 2 列 csv 文件并创建字典?【英文标题】:How do I read a 2 column csv file and create a dictionary? 【发布时间】:2017-03-06 18:56:10 【问题描述】:

例如给定以下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

【问题讨论】:

你有重复的 ID 吗? @PadraicCunningham 不,谢天谢地哈哈 【参考方案1】:

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

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

制作你想要的字典。

【讨论】:

【参考方案2】:

比你想象的要简单:

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 中,您就完成了。

【讨论】:

这绝对是正确的答案。我刚刚工作过类似converting to a Counter.【参考方案3】:

另一种方法是创建一个元组并将元组转换为字典,甚至适用于 txt 文件。

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

result = dict(myTuples)
print result

导致:

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

您可以在读取数据/csv 时跳过标题或第一行,因此 'ID': ' type' 不会在字典中。

最短的方式跳过第一行并附加行的位置而不创建 IDtype 变量:

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'

【讨论】:

以上是关于如何读取 2 列 csv 文件并创建字典?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 csv 读取列并运行更新查询?

04 pandas DataFrame_创建、文件读取、编码

如何从 CSV 创建字典,其中两列作为 Python 中的键 [重复]

如何使用 pandas 读取 csv 以创建由 3 列组成的矩阵

如何在使用 pandas 读取 csv 文件时删除特定列?

如何读取 2 列 csv 文件并将列绘制为 x 与 y 值