从csv文件创建字典?
我正在尝试从一个csv文件创建一个字典。这个csv文件的第一列包含唯一的键,第二列包含对应的值。每一行代表字典中的一个键值对。我试着使用csv.DictReader
和csv.DictWriter
这两个类,但我只知道怎么为每一行生成一个新的字典。我想要的是一个完整的字典。以下是我尝试使用的代码:
import csv
with open('coors.csv', mode='r') as infile:
reader = csv.reader(infile)
with open('coors_new.csv', mode='w') as outfile:
writer = csv.writer(outfile)
for rows in reader:
k = rows[0]
v = rows[1]
mydict = {k:v for k, v in rows}
print(mydict)
当我运行上面的代码时,出现了一个错误:ValueError: too many values to unpack (expected 2)
。我该如何从csv文件创建一个字典呢?谢谢。
19 个回答
76
在编程中,有时候我们需要在代码里做一些判断,看看某个条件是否成立。比如说,我们想知道一个数字是不是大于零。如果是,我们就可以执行某个操作;如果不是,我们就可以选择其他的操作。
这种判断通常用“如果”这个词来表示。在代码中,这种判断叫做“条件语句”。它帮助我们根据不同的情况来决定程序的走向。
简单来说,条件语句就像是一个分岔路口,程序在这里需要选择一条路走下去。希望这个解释能让你更容易理解条件语句的作用!
import csv
reader = csv.reader(open('filename.csv', 'r'))
d = {}
for row in reader:
k, v = row
d[k] = v
144
通过调用 open 函数来打开文件,然后使用 csv.DictReader 来处理它。
input_file = csv.DictReader(open("coors.csv"))
你可以通过遍历 input_file 来逐行读取 csv 文件中的内容。
for row in input_file:
print(row)
或者,如果你只想访问第一行数据
dictobj = csv.DictReader(open('coors.csv')).next()
更新 在 Python 3 及以上版本中,这段代码会稍微有所不同:
reader = csv.DictReader(open('coors.csv'))
dictobj = next(reader)
233
我觉得你想要的语法应该是这样的:
import csv
with open('coors.csv', mode='r') as infile:
reader = csv.reader(infile)
with open('coors_new.csv', mode='w') as outfile:
writer = csv.writer(outfile)
mydict = {rows[0]:rows[1] for rows in reader}
另外,如果你使用的是 Python 版本小于等于 2.7.1,那么你需要:
mydict = dict((rows[0],rows[1]) for rows in reader)