如何在Python中用一个字典列表更新另一个字典列表的值?
用update_list更新score_list的实用方法
嘿,这个需求挺常见的,我给你分享两种靠谱的实现方式,你可以根据自己的场景来选:
方法一:先构建更新映射(高效推荐)
这种方法先把update_list转换成以id为键、score为值的字典,然后遍历score_list进行更新——字典的查找效率是O(1),数据量大的时候优势特别明显。
代码示例:
score_list = [{'id': 1, 'score': 123}, {'id': 2, 'score': 234}, {'id': 3, 'score': 345}] update_list = [{'id': 1, 'score': 500}, {'id': 3, 'score': 300}] # 把update_list转成id对应score的映射字典 update_map = {item['id']: item['score'] for item in update_list} # 遍历score_list,匹配到id就更新score for item in score_list: if item['id'] in update_map: item['score'] = update_map[item['id']] print(score_list) # 输出结果: [{'id': 1, 'score': 500}, {'id': 2, 'score': 234}, {'id': 3, 'score': 300}]
方法二:嵌套循环直接匹配(简单直观)
如果你的数据量很小,直接用嵌套循环匹配id更新也完全没问题,代码直白易懂,新手也能一眼看明白逻辑。
代码示例:
score_list = [{'id': 1, 'score': 123}, {'id': 2, 'score': 234}, {'id': 3, 'score': 345}] update_list = [{'id': 1, 'score': 500}, {'id': 3, 'score': 300}] for score_item in score_list: for update_item in update_list: if score_item['id'] == update_item['id']: score_item['score'] = update_item['score'] break # 匹配到就跳出内层循环,避免做无用检查 print(score_list) # 输出结果和上面一致
两种方法都能达到你想要的效果,第一种更适合处理大量数据,第二种胜在简单好理解~
内容的提问来源于stack exchange,提问作者bayman
相关产品推荐
相关产品推荐

