我试图循环一个python字典,看看我从csv文件中获取的值是否已经存在于字典中,如果值不存在,我想将它们添加到字典中。然后将其附加到列表中。
我得到错误列表索引必须是整数,而不是str。
示例输入
名字姓氏
约翰史密斯 约翰史密斯示例输出
first_name john姓氏史密斯
user_list = []
with open(input_path,'rU') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
if row['first_name'] not in user_dictionary['first_name'] and not in row['last_name'] not in user_dictionary['last_name']:
user_dictionary = {
'first_name':row['first_name'],
'last_name':row['last_name']
}
user_list.append(user_dictionary)
答案 0 :(得分:0)
目前,您的代码正在for循环的每次迭代中创建一个新的字典。如果字典的每个值都是一个列表,那么您可以通过键附加到该列表:
with open(input_path,'rU') as csvfile:
reader = csv.DictReader(csvfile)
user_dictionary = {"first_name":["name1, "name2", ...], "last_name":["name3", name4", ....]}
for row in reader:
if row['first_name'] not in user_dictionary['first_name'] and not in row['last_name'] not in user_dictionary['last_name']:
user_dictionary["first_name"].append(row['first_name'])
user_dictionary['last_name'].append(row['last_name'])
答案 1 :(得分:0)
错误"list indices must be integers, not str"
使问题变得清晰:在抛出错误的行上,您有一个您认为是dict的列表。你尝试使用一个字符串作为它的关键,并且繁荣!
你没有提供足够的信息来猜测它是什么:它可能是user_dictionary
,可能是你正在使用csv.reader
而不是csv.DictReader
就像你说的那样。它甚至可能是别的东西 - 没有告诉你还剩下什么代码。但它是一个你正在使用的列表,好像它是一个字典。