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’}]
