嵌套字典的理解列表获取值但获取键

Comprehension list of nested dictionary to get values but got keys

对列表理解还很陌生,the_list 我想提取嵌套字典的键,但我得到的是值。我错过了什么或者我做错了什么?

the_list = [{'size': 0, 'values': [], 'start': 0}, {'size': 2, 'values': [{'user': {'name': 'anna', 'id': 10, 'displayName': 'Anna'}, 'category': 'Secretary'}, {'user': {'name': 'bob', 'id': 11, 'displayName': 'Bobby'}, 'category': 'Manager'}], 'start': 0}, {'size': 1, 'values': [{'user': {'name': 'claire', 'id': 13, 'displayName': 'Clarissa Claire'}, 'category': 'Secretary'}], 'start': 0}]

list_comprehension = []
list_comprehension = [x for x in the_list for x in the_list[1]['values'][0]]
print(list_comprehension)

    >> ['user', 'category', 'user', 'category', 'user', 'category']

想要

list_comprehension = [[anna, Secretary], [bob, manager], [claire, Secretary]]

你可以用这个。我个人尽量避免嵌套列表理解,因为它们很难阅读和调试。

[[x['category'], x['user']['displayName']] for nest_list in the_list for x in nest_list["values"] ]

输出:

[['Secretary', 'Anna'], ['Manager', 'Bobby'], ['Secretary', 'Clarissa Claire']]

编辑: 没有嵌套理解列表的版本。这样做的时候,我意识到比我意识到的要多一个级别,这使得这个版本有点长。所以最后我不确定我会在产品中使用哪一个。

result = []
dict_list = [nest_list["values"] for nest_list in the_list]
for elt in dict_list:
    for d in elt:
        result.append([d['category'], d['user']['displayName']])

我想出了这个解决方案,但可读性不是很好...

comprehensionList = [[user['user']['name'], user['category']] for x in the_list for user in x['values']]

# Output
[['anna', 'Secretary'], ['bob', 'Manager'], ['claire', 'Secretary']]