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
答案 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'