Summarize a list of dictionaries based on common key values

后端 未结 3 995
爱一瞬间的悲伤
爱一瞬间的悲伤 2021-01-28 01:15

I have a list of dictionaries like so:

dictlist = [{\'day\': 0, \'start\': \'8:00am\', \'end\': \'5:00pm\'},
            {\'day\': 1, \'start\': \'10:00am\', \'e         


        
3条回答
  •  感动是毒
    2021-01-28 01:22

    With itertools.groupby:

    In [1]: %paste
    dictlist = [{'day': 0, 'start': '8:00am',  'end': '5:00pm'},
                {'day': 1, 'start': '10:00am', 'end': '7:00pm'},
                {'day': 2, 'start': '8:00am',  'end': '5:00pm'},
                {'day': 3, 'start': '10:00am', 'end': '7:00pm'},
                {'day': 4, 'start': '8:00am',  'end': '5:00pm'},
                {'day': 5, 'start': '11:00am', 'end': '1:00pm'}]
    
    ## -- End pasted text --
    
    In [2]: from itertools import groupby
    
    In [3]: tuplist = [(d['day'], (d['start'], d['end'])) for d in dictlist]
    
    In [4]: key = lambda x: x[1]
    
    In [5]: summarylist = [(sorted(e[0] for e in g),) + k
       ...:        for k, g in groupby(sorted(tuplist, key=key), key=key)]
    
    In [6]: summarylist
    Out[6]:
    [([1, 3], '10:00am', '7:00pm'),
     ([5], '11:00am', '1:00pm'),
     ([0, 2, 4], '8:00am', '5:00pm')]
    

提交回复
热议问题