Sorting sub-lists into new sub-lists based on common first items

前端 未结 4 1819
面向向阳花
面向向阳花 2020-12-10 19:49

I have a large number of two-membered sub-lists that are members of a list called mylist:

mylist = [[\'AB001\', 22100],
          [\'AB001\', 32         


        
4条回答
  •  春和景丽
    2020-12-10 20:53

    collections.defaultdict

    An itertools.groupby solution will incur O(n log n) cost since the input must be sorted first. You can a use defaultdict of lists for a guaranteed O(n) solution:

    from collections import defaultdict
    
    dd = defaultdict(list)
    for item in mylist:
        dd[item[0]].append(item)
    
    res = list(dd.values())
    
    print(res)
    
    [[['AB001', 22100], ['AB001', 32935], ['AB001', 34439]],
     [['XC013', 99834], ['XC013', 86701]],
     [['VD126', 18884]]]
    

提交回复
热议问题