Merging repeated items in a list into a python dictionary

前端 未结 2 656
难免孤独
难免孤独 2021-01-14 23:13

I have a list that looks like the one bellow, with the same item of a pair repeated some times.

l = ([\'aaron distilled \', \'alcohol\', \'5\'], 
[\'aaron di         


        
2条回答
  •  庸人自扰
    2021-01-14 23:46

    If the items in L are sorted by the first element you can use groupby

    >>> L = (['aaron distilled ', 'alcohol', '5'], 
    ... ['aaron distilled ', 'gin', '2'], 
    ... ['aaron distilled ', 'beer', '6'], 
    ... ['aaron distilled ', 'vodka', '9'], 
    ... ['aaron evicted ', 'owner', '1'], 
    ... ['aaron evicted ', 'bum', '1'], 
    ... ['aaron evicted ', 'deadbeat', '1'])
    >>> from operator import itemgetter
    >>> from itertools import groupby
    >>> {k: [j for a,b,c in g for j in b,c] for k, g in groupby(L, itemgetter(0))}
    {'aaron evicted ': ['owner', '1', 'bum', '1', 'deadbeat', '1'], 'aaron distilled ': ['alcohol', '5', 'gin', '2', 'beer', '6', 'vodka', '9']}
    

提交回复
热议问题