Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

convert list of lists to dictionary

how can I create a list of dictionaries with those lists

temp = [['header1', '4', '8', '16', '32', '64', '128', '256', '512', '243,6'], ['media_range', '1,200', '2,400', '4,800', '4,800', '6,200', '38,400', '76,800', '153,600', '160,000'], ['speed', '300', '600', '1,200', '2,000', '2,000', '2,000', '2,000', '2,000', '2,000']]

the headers of the dictionary is the first element of the lists

the expected Output is:

output= [{'header1': '4', 'media_range': '1,200', 'speed': '300'}, {'header1': '8', 'media_range': '2,400', 'speed': '600'}, ...]

Ideally the code should handle any amount of lists (in this case 3)

like image 444
goku Avatar asked Nov 22 '25 19:11

goku


1 Answers

IIUC

>>> temp = [['header1', '4', '8', '16', '32', '64', '128', '256', '512', '243,6'], ['media_range', '1,200', '2,400', '4,800', '4
...: ,800', '6,200', '38,400', '76,800', '153,600', '160,000'], ['speed', '300', '600', '1,200', '2,000', '2,000', '2,000', '2,0
...: 00', '2,000', '2,000']]                                                                                                    
>>>                                                                                                                             
>>> keys = [l[0] for l in temp]                                                                                                 
>>> values = [l[1:] for l in temp]                                                                                              
>>> dicts = [dict(zip(keys, sub)) for sub in zip(*values)]                                                                                                             
>>>                                                                                                                                                                    
>>> dicts                                                                                                                                                              
[{'header1': '4', 'media_range': '1,200', 'speed': '300'},
 {'header1': '8', 'media_range': '2,400', 'speed': '600'},
 {'header1': '16', 'media_range': '4,800', 'speed': '1,200'},
 {'header1': '32', 'media_range': '4,800', 'speed': '2,000'},
 {'header1': '64', 'media_range': '6,200', 'speed': '2,000'},
 {'header1': '128', 'media_range': '38,400', 'speed': '2,000'},
 {'header1': '256', 'media_range': '76,800', 'speed': '2,000'},
 {'header1': '512', 'media_range': '153,600', 'speed': '2,000'},
 {'header1': '243,6', 'media_range': '160,000', 'speed': '2,000'}]
like image 177
timgeb Avatar answered Nov 24 '25 08:11

timgeb



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!