数据少的话: lst = sorted(l, key=(lambda x : x.get('type'))) ret = [[]] for prv, nxt in zip(lst[:-1], lst[1:]): ....tmp = ret[-1] ....tmp.append(prv) ....if prv['type']!=nxt['type']: ........ret.append([]) tmp = ret[-1] tmp.append(t[-1]) 然后取 ret 里最多的,或者直接用 groupby [ list(g) for c, g in groupby(lst, key=(lambda x : x.get('type'))) ] 但是都需要排序。