python中 list of dict 的更新替换
2022/1/26 17:08:54
本文主要是介绍python中 list of dict 的更新替换,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
from copy import deepcopy def merge_list_on_keys(new_list, old_list, key_list, remaining_keys=None, replace=True): """ 对 new_list 和 old_list 根据 key_list 列表中的 key 进行合并。 如果传了 remaining_keys 则保留对应的旧 key 对应的值,仅当 replace 为 True 时起作用。 若需要保留原来的所有key,则将 replace 置为 False。 注意本函数会生成一个新的列表。 Arguments: new_list {list} -- 新列表 old_list {list} -- 旧列表 key_list {list} -- 合并依赖的主键列表 Keyword Arguments: remaining_keys {list} -- 当 replace 为 True 时保留对应的旧 key 对应的值 (default: {None}) replace {bool} -- 是否要用新列表的元素替换旧列表元素 (default: {True}) Returns: list -- 生成的新的列表 """ key_dict = {} if new_list and old_list: for doc in old_list: key_id = u'@'.join([unicode(doc.get(key)) for key in key_list]) key_dict[key_id] = doc for doc in new_list: key_id = u'@'.join([unicode(doc.get(key)) for key in key_list]) old_doc = key_dict.get(key_id) key_dict[key_id] = doc if replace: if remaining_keys and old_doc: for key in remaining_keys: if key not in doc and key in old_doc: doc[key] = old_doc[key] elif old_doc: new_doc = deepcopy(old_doc) new_doc.update(doc) key_dict[key_id] = new_doc return key_dict.values() def replace_list_on_keys(new_list, old_list, key_list, remaining_keys): """ 用 new_list 替换 old_list。如果传了 key_list 和 remaining_keys 则根据 key_list 中的 key 保留对应旧的 key 对应的值。 注意本函数会直接对 new_list 进行变更。 """ key_dict = {} if new_list and old_list: for doc in old_list: key_id = u'@'.join([unicode(doc.get(key)) for key in key_list]) key_dict[key_id] = doc for doc in new_list: key_id = u'@'.join([unicode(doc.get(key)) for key in key_list]) old_doc = key_dict.get(key_id) if remaining_keys and old_doc: for key in remaining_keys: if key not in doc and key in old_doc: doc[key] = old_doc[key] return new_list
这篇关于python中 list of dict 的更新替换的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-20Python编程入门指南
- 2024-12-20Python编程基础与进阶
- 2024-12-19Python基础编程教程
- 2024-12-19python 文件的后缀名是什么 怎么运行一个python文件?-icode9专业技术文章分享
- 2024-12-19使用python 把docx转为pdf文件有哪些方法?-icode9专业技术文章分享
- 2024-12-19python怎么更换换pip的源镜像?-icode9专业技术文章分享
- 2024-12-19Python资料:新手入门的全面指南
- 2024-12-19Python股票自动化交易实战入门教程
- 2024-12-19Python股票自动化交易入门教程
- 2024-12-18Python量化入门教程:轻松掌握量化交易基础知识