首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KeyError填充Defaultdict

KeyError填充Defaultdict
EN

Stack Overflow用户
提问于 2016-02-29 18:00:49
回答 1查看 1.5K关注 0票数 4

我试图用csv数据填充默认字典,并得到一个关键错误。

代码语言:javascript
复制
for i in range(0,1):

    #https://docs.python.org/2/library/collections.html#collections.defaultdict
    result = co.defaultdict(list)
    with open(os.path.join(inputdir,tablelist[i])) as f:

        csv_reader = csv.reader(f)
        csv_headings = next(csv_reader)
        read = csv.DictReader(f)

        for line in read:
            for j in range(1,len(csv_headings)):
  error here--->result[line[csv_headings[0]]].append(line[csv_headings[j]])  

用于csv数据

代码语言:javascript
复制
API,CNTYNM,PRMT,
4700100002,Barbour,2,
4700100003,Barbour,3,
4700100004,Barbour,4,

关键的错误在于API,对我来说,这意味着使用dictreader的东西不能像预期的那样工作,有人能给出一些建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-29 18:09:59

您缺少了fieldnames参数到DictReader。如果您修改代码以将csv_haedings传递给DictReader,它将正常工作(希望如预期那样):

代码语言:javascript
复制
for i in range(0,1):

    #https://docs.python.org/2/library/collections.html#collections.defaultdict
    result = co.defaultdict(list)
    with open(os.path.join(inputdir,tablelist[i])) as f:

        csv_reader = csv.reader(f)
        csv_headings = next(csv_reader)
        read = csv.DictReader(f, fieldnames=csv_headings)

        for line in read:
            for j in range(1,len(csv_headings)):
                result[line[csv_headings[0]]].append(line[csv_headings[j]]) 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35706336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档