从多个列表中获取特定的dict属性值

Mod*_*esq 3 python python-3.x

说我有一个看起来像这样的Dict ......

values = {
      'student': [{
                     'field': 'prefix', 
                     'description': 'First name'
                  }, 
                  {
                     'field': 'suffix', 
                     'description': 'Last name'
                  }, 
                  {
                     'field': 'student_email',
                     'description': 'Email address'
                  }],
      'classes':  [{
                     'field': 'course_code', 
                     'description': 'Course code'
                  }]

    }
Run Code Online (Sandbox Code Playgroud)

我想要的

['prefix', 'suffix', 'student_email', 'course_code']
Run Code Online (Sandbox Code Playgroud)

但是我试图在没有循环循环的情况下这样做.

所以这就是我所拥有的:

stored = [] # store the field values in a list
for value in values:
    stored.append(value['field'])
Run Code Online (Sandbox Code Playgroud)

而且它正在抛出:

TypeError: string indices must be integers
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Psi*_*dom 5

您收到错误,因为字典比您的循环深一级,您可以调用items()字典来获取值部分:

[v1['field'] for k, v in values.items() for v1 in v]
# ['prefix', 'suffix', 'student_email', 'course_code']
Run Code Online (Sandbox Code Playgroud)