You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中按公共键合并多字典并为各源字典生成新键的优雅实现方法

嘿,这个按公共键合并字典并生成对应新键的需求,我有个优雅的Python实现方案,一起来看看~

实现思路

核心思路是先收集所有字典中出现过的键(保证不会漏掉只在单个字典里存在的键),然后针对每个键,遍历所有源字典提取对应的值——如果某个键在源字典中不存在,就用空列表(或者你想要的其他空值)来填充,最后把每个键的相关数据整理成字典,组成目标列表。

完整代码示例
# 定义输入字典
d1 = {"key1": ["a", "b"], "key2": ["c", "d"]}
d2 = {"key1": ["e", "f"]}

def merge_dicts_by_common_key(dict_list, dict_names):
    # 收集所有字典中出现的键
    all_keys = set()
    for d in dict_list:
        all_keys.update(d.keys())
    
    result_list = []
    for key in all_keys:
        # 为当前键创建对应的条目字典
        item = {"old_key": key}
        # 遍历每个源字典,添加对应键值对
        for name, d in zip(dict_names, dict_list):
            item[f"{name}_key"] = d.get(key, [])  # 用空列表作为缺失值的默认值
        result_list.append(item)
    return result_list

# 调用函数生成目标列表
dd = merge_dicts_by_common_key([d1, d2], ["d1", "d2"])
print(dd)

运行这段代码后,输出结果就是你想要的结构:

[{'old_key': 'key1', 'd1_key': ['a', 'b'], 'd2_key': ['e', 'f']}, {'old_key': 'key2', 'd1_key': ['c', 'd'], 'd2_key': []}]
代码细节说明
  • 通用性强:这个函数支持合并任意数量的字典,只要把字典放进dict_list,对应的名称放进dict_names就行(比如要加d3,就把[d1,d2]改成[d1,d2,d3],["d1","d2"]改成["d1","d2","d3"]);
  • 缺失值处理:用dict.get(key, 默认值)的方式优雅处理键不存在的情况,这里用的是空列表,如果你想换成None,只需要把[]改成None即可;
  • 集合去重:用set收集所有键,自动帮我们去重,避免重复处理同一个键。

内容的提问来源于stack exchange,提问作者Lopsdie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 20:49:03