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

Python中合并两个字典 相同键拼接值非共有键补0如何实现

Python合并字典实现方案

核心实现思路

先获取两个字典的所有唯一键,遍历每个键分别从两个字典取值,缺失值用字符串'0'补全,最后组装成列表作为新字典的值即可。

基础实现(适合初学者理解)

# 示例字典
d1 = {'David': '5.5', 'John': '1.0', 'Tim' : '2' }
d2 = {'David': '42.5', 'John': '37.0'}

# 格式化函数,匹配示例中去掉.0后缀的需求
def format_num_str(s):
    if s.endswith('.0'):
        return s[:-2]
    return s

# 拿到两个字典的所有唯一键
all_unique_keys = d1.keys() | d2.keys()
d3 = {}

for key in all_unique_keys:
    # get方法第二个参数为找不到键时的默认返回值
    val_from_d1 = d1.get(key, '0')
    val_from_d2 = d2.get(key, '0')
    # 格式化后存入列表
    d3[key] = [format_num_str(val_from_d1), format_num_str(val_from_d2)]

运行后输出d3即为要求的结果:{'David': ['5.5', '42.5'], 'John': ['1.0', '37'], 'Tim': ['2', '0']}

简洁写法(字典推导式)

不需要额外格式化的场景可以直接一行实现:

d3 = {k: [d1.get(k, '0'), d2.get(k, '0')] for k in d1.keys() | d2.keys()}

需要格式化的话套入格式化函数即可:

d3 = {k: [format_num_str(d1.get(k, '0')), format_num_str(d2.get(k, '0'))] for k in d1.keys() | d2.keys()}

注意事项

  • 如果你后续需要对值做数值运算,把默认补全值改成数字0,取出值后转成int/float类型即可
  • d1.keys() | d2.keys()是集合求并集的写法,兼容Python3.0以上所有版本,Python3.9+也可以用(d1 | d2).keys()获取所有唯一键

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 07:42:03