Reputation: 47
I have to transform a list
of dict
s to a
list
of dict
s with a specific structure.
The list
looks like this:
[
{
'manufacurer': 'VW',
'group': 'Passat',
'age': 2
etc.
},
{
'manufacurer': 'Audi',
'group': 'Quadro',
'age': 0.5
etc.
},
{
'manufacurer': 'VW',
'group': 'Golf',
'age': 6,
etc.
},
...
]
The result in something like this:
[
{
"manufacurer": "Audi",
"value_list": [
{
'manufacurer': 'Audi',
'group': 'Quadro',
'age': 0.5
etc.
}
]
},
{
"manufacurer": "VW",
"value_list": [
{
'manufacurer': 'VW',
'group': 'Passat',
'age': 2
etc.
},
{
'manufacurer': 'VW',
'group': 'Golf',
'age': 6
etc.
}
]
}
]
how do I get this result?
Upvotes: 1
Views: 41
Reputation: 195593
lst = [
{
'manufacurer': 'VW',
'group': 'Passat',
'age': 2
},
{
'manufacurer': 'Audi',
'group': 'Quadro',
'age': 0.5
},
{
'manufacurer': 'VW',
'group': 'Golf',
'age': 6,
},
]
out = {}
for item in lst:
out.setdefault(item['manufacurer'], {})['manufacurer'] = item['manufacurer']
out[item['manufacurer']].setdefault('value_list', []).append(item)
out = list(out.values())
# pretty print the list:
from pprint import pprint
pprint(out)
Prints:
[{'manufacurer': 'VW',
'value_list': [{'age': 2, 'group': 'Passat', 'manufacurer': 'VW'},
{'age': 6, 'group': 'Golf', 'manufacurer': 'VW'}]},
{'manufacurer': 'Audi',
'value_list': [{'age': 0.5, 'group': 'Quadro', 'manufacurer': 'Audi'}]}]
Upvotes: 1