如何读取 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' 不会在字典中。
最短的方式跳过第一行并附加行的位置而不创建 ID 和 type 变量:
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 文件并创建字典?的主要内容,如果未能解决你的问题,请参考以下文章
04 pandas DataFrame_创建、文件读取、编码
如何从 CSV 创建字典,其中两列作为 Python 中的键 [重复]