Home > Software engineering >  Comprehension list of nested dictionary to get values but got keys
Comprehension list of nested dictionary to get values but got keys

Time:03-03

Fairly new to list comprehension and have the_list that I want to extract the keys of nested dictionary but I got the values instead. What am I missing or what am I doing wrong?

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']

Want

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

CodePudding user response:

You could use this. I personnally try to avoid nested list comprehension as they are hard to read and debug.

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

Output:

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

CodePudding user response:

I've come up with this solution, but it is not very readable ...

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

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