Splitting a list of dictionaries into several lists of dictionaries

后端 未结 5 1591
刺人心
刺人心 2020-12-15 06:25

I\'ve been whacking away at this for a while to no avail... Any help would be greatly appreciated.

I have:

[{\'event\': 0, \'voltage\': 1, \'time\':         


        
5条回答
  •  慢半拍i
    慢半拍i (楼主)
    2020-12-15 07:02

    I think what you really want is to filter them:

    elist = [{'event': 0, 'voltage': 1, 'time': 0},
    {'event': 0, 'voltage': 2, 'time': 1},
    {'event': 1, 'voltage': 1, 'time': 2},
    {'event': 1, 'voltage': 2, 'time': 3},
    {'event': 2, 'voltage': 1, 'time': 4},
    {'event': 2, 'voltage': 2, 'time': 5}]
    
    
    from itertools import ifilter
    
    def get_events(elist, n):
        return ifilter( lambda d: d['event'] == n , elist)
    
    for e in get_events(elist,0):
        print e
    

    this solution will not create additional structures. (think in case of HUGE event list)

    Another very nice solution is to use groupby:

    from itertools import groupby
    from operator import itemgetter
    for group in groupby(elist, itemgetter('event')):
        id, event_list = group
        for e in event_list:
            print e
    
    {'time': 0, 'event': 0, 'voltage': 1}
    {'time': 1, 'event': 0, 'voltage': 2}
    {'time': 2, 'event': 1, 'voltage': 1}
    {'time': 3, 'event': 1, 'voltage': 2}
    {'time': 4, 'event': 2, 'voltage': 1}
    {'time': 5, 'event': 2, 'voltage': 2}
    

提交回复
热议问题