如何在Python中按指定格式合并两个字典
Python 如何将多个字典组织成列表形式?
问题描述
现有两个字典:
dict1={ 'kl':'ngt', 'schemas': [ { 'date':'14-12-2022', 'name':'kolo' } ] } dict2={ 'kl':'mlk', 'schemas': [ { 'date':'14-12-2022', 'name':'maka' } ] }
需要将它们组织成一个列表all_dict,列表中的每个元素为原字典(可按需修改字典内容),最终结构如下:
all_dict=[ { 'kl':'ngt', 'schemas': [ { 'date':'14-12-2022', 'name':'kolo' } ] }, { 'kl':'mlk', 'schemas': [ { 'date':'23-10-2022', 'name':'maka' } ] } ]
解决方案
方法1:直接构造列表
这是最直观的实现方式,直接将目标字典作为元素放入列表:
# 先按需修改字典内容(比如修改dict2的date字段) dict2['schemas'][0]['date'] = '23-10-2022' # 构造目标列表 all_dict = [dict1, dict2]
执行后all_dict的结构完全符合需求。
方法2:批量处理多个字典
如果后续需要加入更多字典(如dict3、dict4),可以直接扩展列表元素,或者通过批量方式生成:
# 新增示例字典 dict3 = {'kl': 'xyz', 'schemas': [{'date': '01-01-2023', 'name': 'test'}]} # 扩展列表 all_dict = [dict1, dict2, dict3] # 若字典按规律命名(如dict1、dict2...dictn),可使用列表推导式批量获取 all_dict = [globals()[f'dict{i}'] for i in range(1, 4)]
注意事项
如果需要避免原字典被修改时影响all_dict中的内容,需要对字典进行深拷贝,示例如下:
import copy all_dict = [copy.deepcopy(dict1), copy.deepcopy(dict2)]
这样后续修改原字典dict1或dict2时,all_dict中的元素不会同步变化。
内容的提问来源于stack exchange,提问作者Pathia Nanto
相关产品推荐
相关产品推荐

