我正在寻找修改字典列表中的值。

时间:2019-10-27 00:40:03

标签: python-3.x list dictionary

要修改的值不是相同的key:value组合,将搜索它们以指示#该字典将被修改。这是我尝试的代码:

employees = [
      {
        "first_name": "Bill", 
        "last_name": "Lumbergh",
        "job_title": "Vice President",
        "hire_date": 1985,
        "performance_review": "excellent"
      }, {
        "first_name": "Michael", 
        "last_name": "Bolton",
        "job_title": "Programmer",
        "hire_date": 1995,
        "performance_review": "poor"
      }, {
        "first_name": "Peter", 
        "last_name": "Gibbons",
        "job_title": "Programmer",
        "hire_date": 1989,
        "performance_review": "poor"
      }, {
        "first_name": "Samir", 
        "last_name": "Nagheenanajar",
        "job_title": "Programmer",
        "hire_date": 1974,
        "performance_review": "fair"
      }, {
        "first_name": "Milton", 
        "last_name": "Waddams",
        "job_title": "Collator",
        "hire_date": 1974,
        "performance_review": "does he even work here?"
      }, {
        "first_name": "Bob", 
        "last_name": "Porter",
        "job_title": "Consultant",
        "hire_date": 1999,
        "performance_review": "excellent"
      }, {
        "first_name": "Bob", 
        "last_name": "Slydell",
        "job_title": "Consultant",
        "hire_date": 1999,
        "performance_review": "excellent"
      }
    ]

employees[0]['review_finished'] = 'yes'
employees[1]['review_finished'] = 'yes'
employees[2]['review_finished'] = 'yes'
employees[3]['review_finished'] = 'yes'
employees[4]['review_finished'] = 'yes'
employees[5]['review_finished'] = 'yes'
employees[6]['review_finished'] = 'yes'

def update_file(employees):
    for dict in employees:
        for k, v in dict.items():
            if [k]['first_name'] == 'Bill':
                dict [v]['performance_review'] = 'poor'
            elif [k]['job_title'] == 'Consultant':
                dict[v]['performance_review'] = 'poor'
            else:
                dict[v]['performance_review'] = 'excellent'



update_file(employees)

这是出现的错误: 追溯(最近一次通话):   文件“ C:\ Users \ brend \ Documents \ GA.py \ problem1.py”,第70行,在     update_file(员工)   在update_file中,文件“ C:\ Users \ brend \ Documents \ GA.py \ problem1.py”,第60行     如果[k] ['first_name'] =='Bill': TypeError:列表索引必须是整数或切片,而不是str

1 个答案:

答案 0 :(得分:0)

在您的代码中,dict变量是一个字典,而k,v是元组,其中k是键名,v是值。当您键入[k]['first_name']时,您尝试使用字符串([k])为列表(['first_name'])建立索引,这就是为什么您会收到错误消息。您想做的事情可以改写为

def update_file(employees):
    for dict in employees:
        if dict['first_name'] == 'Bill':
           dict['performance_review'] = 'poor'
        elif dict['job_title'] == 'Consultant':
           dict['performance_review'] = 'poor'
        else:
           dict['performance_review'] = 'excellent'