对于列表:NoneType对象没有属性附加

时间:2019-08-09 22:47:16

标签: python list dictionary append nonetype

当我尝试将字符串追加到字典中的列表值时,我一直收到此错误,因此当我尝试检查对象的类型时(请参阅底部的第二行代码),它返回“不可散列的类型:列表”。

我正在尝试从CSV中获取信息并将其放入字典中。 CSV具有名称列表,以及与这些名称相关的注释。许多名称重复出现多个注释,因此我试图将所有这些注释存储在一个列表中,该列表将是值,而作者名称将是关键。 例如:

dictionary = {'Mike': 'Hey there', 'Grandma': 'Good morning', 'Mike': 'Yes it is'}

实际上是:

dictionary = {'Mike': ['Hey there', 'Yes it is'], 'Grandma': ['Good morning']}

这样,当我接收数据时,如果需要,我可以简单地添加另一个注释。例如,如果我对迈克有新的评论,那就是“再见”,只需将其添加到他的值列表中即可。

我的代码如下:

def extract_data():
    data_dict = {}

    with open(data_CSV_file,'rt') as file:
        #to avoid complications with the null byte
        data = csv.reader(x.replace('\0', '') for x in file)
        count = 0

        # keep list of authors to check when we're adding
        list_of_authors = []

        # get data from CSV
        for row in data:

            if count < 400:
                # check if we've already added this person
                if row[AUTHOR] not in list_of_authors:
                    list_of_comments = [row[COMMENT]]

                    data_dict.update({row[AUTHOR]: list_of_comments})
                    list_of_authors.append(row[AUTHOR])
                    count += 1



                # if so, simply add to their list of comments
                else:
                    cvalue = data_dict.get(row[AUTHOR])
                    #print(type(data_dict.get(cvalue)))
                    data_dict[row[0]] = cvalue.append(row[1])
    return data_dict

由于我正在从CSV文件中读取数据,所以我认为这是最好的方法,因为CSV文件没有组织,所以我不知道作者的下一条评论会出现在哪里,并且不会希望每次我遇到新名称时都必须搜索整个CSV文件以获取他们的所有注释。

0 个答案:

没有答案