python 问题自动匹配解决方案_匹配字典集。最优雅的解决方案。Python
給出了兩份字典清單,新的和舊的。詞典在兩個列表中表示相同的對象。
我需要找出差異并生成新的詞典列表,其中只有新詞典中的對象和舊詞典中的更新屬性。
示例:list_new=[
{ 'id':1,
'name':'bob',
'desc': 'cool gay'
},
{ 'id':2,
'name':'Bill',
'desc': 'bad gay'
},
{ 'id':3,
'name':'Vasya',
'desc': None
},
]
list_old=[
{ 'id':1,
'name':'boby',
'desc': 'cool gay',
'some_data' : '12345'
},
{ 'id':2,
'name':'Bill',
'desc': 'cool gay',
'some_data' : '12345'
},
{ 'id':3,
'name':'vasya',
'desc': 'the man',
'some_data' : '12345'
},
{ 'id':4,
'name':'Elvis',
'desc': 'singer',
'some_data' : '12345'
},
]
所以。。在那個例子中,我想產生一個新的列表,其中將只有來自列表的新同志新的更新數據。由id匹配。所以鮑勃會變成博比,比爾會變成科爾·蓋伊,瓦西亞會變成——那個男人。最后貓王必須缺席。
給我一個優雅的解決方案。更少的迭代循環。
有辦法,我會解決的。哪一個不是最好的:def match_dict(new_list, old_list)
ids_new=[]
for item in new_list:
ids_new.append(item['id'])
result=[]
for item_old in old_medias:
if item_old['id'] in ids_new:
for item_new in new_list:
if item_new['id']=item_old['id']
item_new['some_data']=item_old['some_data']
result.append(item_new)
return result
我之所以懷疑,是因為循環中有循環。如果有2000個項目的清單,這個過程將需要同樣的時間。
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的python 问题自动匹配解决方案_匹配字典集。最优雅的解决方案。Python的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 天启内存条:高性能新选择,游戏爱好者的福
- 下一篇: i7 3820 2400内存超频实测:性