ud课程:计算机导论19-involved,字典中循环

    利用

         for <key> in <dictionary>:

                    <block>

结构,可以方便的在字典中多层查询值,并导出相关结果。

比如:

#    { <hexamester>, { <class>: { <property>: <value>, ... },
#                                     ... },
#      ... }


# For example,


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, 'Peter C.')

#>>> {'apr2012': ['cs262'], 'feb2012': ['cs101']}

官方答案是这样: 

ud课程:计算机导论19-involved,字典中循环

也可写成这样:

def involved(courses, person):
    result = {}
    for c in courses:
        for a in courses[c]:
            for b in courses[c][a]:
                if courses[c][a][b] == person:
                    if c in result:
                        result[c].append(a)
                    else:
                        result[c] = [a]

    return result


但是,循环中的某一段,提出来的结果是不一样的。比如


def involved(courses, person):
    result = {}

    for c in courses:

        for a in courses[c]:
            return a