Tôi đang cố gắng xác định một thủ tục, involved(courses, person)
, lấy làm đầu vào cấu trúc khóa học và một người và trả về một từ điển mô tả tất cả các khóa học mà người đó tham gia vàoLoạiError: chuỗi chỉ số phải là số nguyên, không str // làm việc với dict
đây là involved(courses, person)
chức năng của tôi:.
def involved(courses, person):
for time1 in courses:
for course in courses[time1]:
for info in time1[course]:
print info
Dưới đây là từ điển của tôi:
courses = {
'feb2012': { 'cs101': {'name': 'Building a Search Engine',
'teacher': 'Dave',
'assistant': 'Peter C.'},
'cs373': {'name': 'Programming a Robotic Car',
'teacher': 'Sebastian',
'assistant': 'Andy'}},
'apr2012': { 'cs101': {'name': 'Building a Search Engine',
'teacher': 'Dave',
'assistant': 'Sarah'},
'cs212': {'name': 'The Design of Computer Programs',
'teacher': 'Peter N.',
'assistant': 'Andy',
'prereq': 'cs101'},
'cs253':
{'name': 'Web Application Engineering - Building a Blog',
'teacher': 'Steve',
'prereq': 'cs101'},
'cs262':
{'name': 'Programming Languages - Building a Web Browser',
'teacher': 'Wes',
'assistant': 'Peter C.',
'prereq': 'cs101'},
'cs373': {'name': 'Programming a Robotic Car',
'teacher': 'Sebastian'},
'cs387': {'name': 'Applied Cryptography',
'teacher': 'Dave'}},
'jan2044': { 'cs001': {'name': 'Building a Quantum Holodeck',
'teacher': 'Dorina'},
'cs003': {'name': 'Programming a Robotic Robotics Teacher',
'teacher': 'Jasper'},
}
}
Khi tôi đang cố gắng để kiểm tra mã của tôi:
>>>print involved(courses, 'Dave')
Python cho tôi một lỗi:
for info in time1[course]:
TypeError: string indices must be integers, not str
Làm thế nào tôi có thể khắc phục điều đó?
Cảm ơn.
Thay vào đó, khi bạn không cần khóa, bạn có thể sử dụng [itervalues] (http://docs.python.org/2/library/stdtypes.html#dict.itervalues). – Matthias
Vâng, cảm ơn thêm, tôi không biết liệu OP có muốn sử dụng các khóa hay không, nhưng tôi cần lưu ý rằng –