Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Duplicate python dict for each value

In a list containing dictionaries, how do I split it based on unique values of dictionaries? So for instance, this:

t = [
     {'name': 'xyz', 'value': ['K','L', 'M', 'N']}, 
     {'name': 'abc', 'value': ['O', 'P', 'K']}
     ]

becomes this:

t = [
     {'name': 'xyz', 'value': 'K'},
     {'name': 'xyz', 'value': 'L'},
     {'name': 'xyz', 'value': 'M'},
     {'name': 'xyz', 'value': 'N'},
     {'name': 'abc', 'value': 'O'},
     {'name': 'xyz', 'value': 'P'},
     {'name': 'xyz', 'value': 'K'}
     ]
like image 351
khan Avatar asked Jul 11 '26 12:07

khan


1 Answers

You can do this with a list comprehension. Iterate through each dictionary d, and create a new dictionary for each value in d['values']:

>>> t = [ dict(name=d['name'], value=v) for d in t for v in d['value'] ]
>>> t
[{'name': 'xyz', 'value': 'K'},
 {'name': 'xyz', 'value': 'L'},
 {'name': 'xyz', 'value': 'M'},
 {'name': 'xyz', 'value': 'N'},
 {'name': 'abc', 'value': 'O'},
 {'name': 'abc', 'value': 'P'},
 {'name': 'abc', 'value': 'K'}]
like image 198
mdml Avatar answered Jul 14 '26 01:07

mdml