我会
itertools.groupby用来对元素进行分组:
lst = sorted(itertools.chain(list_a,list_b), key=lambda x:x['user__id'])list_c = []for k,v in itertools.groupby(lst, key=lambda x:x['user__id']): d = {} for dct in v: d.update(dct) list_c.append(d) #could also do: #list_c.append( dict(itertools.chain.from_iterable(dct.items() for dct in v)) ) #although that might be a little harder to read.
如果您对
lambda功能不满意,可以随时使用
operator.itemgetter('user__id')。(它的效率可能也略高一些)
为了使lambda / itemetter神秘化,请注意:
def foo(x): return x['user__id']
与以下任意一项相同*:
foo = operator.itemgetter('user__id')foo = lambda x: x['user__id']
*有一些区别,但是对于这个问题来说并不重要
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)