我试着在python字典中循环,看看我从csv文件中获得的值是否已经存在于字典中,如果这些值不存在,我想将它们添加到字典中。然后将其附加到列表中。在
我得到的错误列表索引必须是整数,而不是str
示例输入
名字姓氏
约翰·史密斯
约翰·史密斯
输出示例
姓约翰姓史密斯
用户列表=[]
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)
目前,您的代码正在为for循环的每次迭代创建一个新字典。如果字典的每个值都是一个列表,则可以通过以下键将其附加到该列表:
通常,您可以在^{} 视图上使用成员资格测试(
x in y
)来检查字典中是否已经存在该值。在但是,如果您试图将CSV文件中的所有唯一用户添加到用户列表中,则这与字典值测试无关,而与列表成员资格测试无关。在
您可以使用一个^{} ,它将包含添加到列表中的所有用户的“id”,并启用快速
O(n)
(摊销)时间检查,而不是每次迭代整个列表进行缓慢的成员资格检查:错误
"list indices must be integers, not str"
使问题变得清楚:在抛出错误的行上,您有一个您认为是dict的列表,您尝试使用一个字符串作为它的键,然后砰!在你没有提供足够的信息来猜测它是哪个词:它可能是},而不是你说的{}。它甚至可能是其他的东西,你不知道你在代码中还遗漏了什么。但这是一个列表,你用的就像是一个口述
user_dictionary
,可能是你用的是{相关问题 更多 >
编程相关推荐