从 csv 文件创建字典?

新手上路,请多包涵

我正在尝试从 csv 文件创建字典。 csv 文件的第一列包含唯一键,第二列包含值。 csv 文件的每一行代表字典中唯一的键值对。我尝试使用 csv.DictReadercsv.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 文件创建一个字典?谢谢。

原文由 drbunsen 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 607
2 个回答

我相信您正在寻找的语法如下:

 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)

原文由 Nate 发布,翻译遵循 CC BY-SA 4.0 许可协议

通过调用 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)

原文由 Laxmikant Ratnaparkhi 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题