我正在尝试定义一个过程involved(courses, person)
,它接受一个课程结构和一个person作为输入,并返回一个描述该person参与的所有课程的字典。
这是我的involved(courses, person)
函数:
def involved(courses, person):
for time1 in courses:
for course in courses[time1]:
for info in time1[course]:
print info
这是我的字典:
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'},
}
}
当我试图测试我的代码时:
>>>print involved(courses, 'Dave')
Python给我一个错误:
for info in time1[course]:
TypeError: string indices must be integers, not str
我该怎么解决?
谢谢。
实际上,我认为遍历字典的更一般的方法是使用iteritems():
输出:
或者,正如Matthias在评论中提到的,如果您不需要密钥,可以使用itervalues():
time1
是最外层字典的键,例如,feb2012
。因此,您尝试对字符串进行索引,但只能对整数进行索引。我想你想要的是:当你翻阅每本字典时,你必须再加一个嵌套。
我看到你在寻找一个问题的实现,而不是解决那个错误。这里有一个可能的解决方案:
我做的第一件事是得到课程列表,然后根据老师的名字筛选。
相关问题 更多 >
编程相关推荐