python遍历字典以查看值是否存在

时间:2017-10-15 13:39:10

标签: python dictionary

我试图循环一个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)

2 个答案:

答案 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就像你说的那样。它甚至可能是别的东西 - 没有告诉你还剩下什么代码。但它是一个你正在使用的列表,好像它是一个字典。