python算法,如何优雅的合并2个列表字典?
问题描述
我有2个字典,如下:
a = [{’泉州seo’: ’2,1’}, {’泉州网站建设’: ’1’}, {’泉州网络公司’: ’’}, {’泉州微信小程序’: ’’}]b = [{’泉州seo’: ’’}, {’泉州网站建设’: ’’}, {’泉州网络公司’: ’’}, {’泉州微信小程序’: ’15,34’}]
2个字典分别存放的是我一些数据,我现在想要的效果是把a和b合并起来显示,比如这样:
c = [{’泉州seo’: ’2,1’}, {’泉州网站建设’: ’1’}, {’泉州网络公司’: ’’}, {’泉州微信小程序’: ’15,34’}]
就是这样一个简单的效果!请问要如何用最简单的代码来实现!欢迎高手挑战!
问题解答
回答1:字典貌似不应该这样用的吧……我想给出的答案是
c = {k:d1[k]+d2[k] for d1,d2 in zip(a,b) for k in d1}
不过根据要求答案应该是
c = [{k:d1[k]+d2[k]} for d1,d2 in zip(a,b) for k in d1]回答2:
a中每个字典的值和b中每个字典的值对比,如果b中字典的值比a相应字典的值大,就copy过来,然后赋值给c.
>>> a = [{’s1’: ’2,1’}, {’s2’: ’1’}, {’s3’: ’’}, {’s4’: ’’}]>>> b = [{’s1’: ’’}, {’s2’: ’’}, {’s3’: ’’}, {’s4’: ’15,34’}]>>> for i in range(len(a)):if cmp(a[i],b[i]) < 0: a[i] = b[i].copy()>>> c = a>>> print c[{’s1’: ’2,1’}, {’s2’: ’1’}, {’s3’: ’’}, {’s4’: ’15,34’}]