Skip to content Skip to sidebar Skip to footer

Merge Three List To Dictionary But Everything Is Out Of Place/not Printed

I asked this question yesterday Merging three lists into into one dictionary The number one answer was the most correct in what I needed but re-looking at MY automobile.txt file I

Solution 1:

Recommendation

You could do a dictionary of lists of tuples. Defaultdict is your friend.

Code

from collections import defaultdict

year = [1958, 1909, 1958, 1958, 1961, 1961]
maker = ['Ford', 'Ford', 'Lotus', 'MGA', 'Amphicar', 'Corvair']
model = ['Edsel', 'Model T', 'Elite', 'Twin Cam', '', '']

d = defaultdict(list)
for maker, model, year in zip(maker, model, year):
    d[maker].append((model, year))

Result

>>> from collections import defaultdict
>>> 
>>> year = [1958, 1909, 1958, 1958, 1961, 1961]
>>> maker = ['Ford','Ford','Lotus','MGA', 'Amphicar', 'Corvair']
>>> model = ['Edsel', 'Model T', 'Elite', 'Twin Cam', "", ""]
>>> 
>>> d = defaultdict(list)
>>> for maker, model, year in zip(maker, model, year):
...     d[maker].append((model, year))
... 
>>> from pprint import pprint
>>> pprint(dict(d))
{'Amphicar': [('', 1961)],
 'Corvair': [('', 1961)],
 'Ford': [('Edsel', 1958), ('Model T', 1909)],
 'Lotus': [('Elite', 1958)],
 'MGA': [('Twin Cam', 1958)]}

You can also use your izip_longest:

from itertools import izip_longest

...

d = defaultdict(list)
for maker, model, year in izip_longest(maker, model, year):
    d[maker].append((model, year))

Then you get None for the other values.


Post a Comment for "Merge Three List To Dictionary But Everything Is Out Of Place/not Printed"