python实现字典合并的五种方法(附示例代码)

 更新时间:2024年04月03日 11:25:09   作者:码农研究僧  
在Python中,有多种方法可以通过使用各种函数和构造函数来合并字典,在本文中,我们将讨论一些合并字典的方法,并通过代码示例讲解的非常详细,具有一定的参考价值,需要的朋友可以参考下

前言

从项目中了解到这个函数:res = {**res, **tmp},也知道是字典的合并,且遇到相同的键会进行覆盖而不是追加

对此详细了解Python字典合并的多个方法

由于字典的key是唯一的,对应如果出现一样的,会出现强覆盖,这一点需要明确

1. 字典拼接

这种方法比较低效,不过也科普下

不能直接对两个 字典对象使用 + 运算符,需要将 字典转换为列表,然后再进行合并

dict1 = {'a': 1, 'b': 2}
dict2 = {'c': 3, 'd': 4}

merged_dict = dict(list(dict1.items()) + list(dict2.items()))

print(f"dict1:{dict1}")
print(f"dict2:{dict2}")
print(merged_dict)  # 输出: {'a': 1, 'b': 2, 'c': 3, 'd': 4}

截图如下:

在这里插入图片描述

2. {**dict1, **dict2}

字典解包操作符**,它将两个字典中的键值对解包并合并成一个新的字典

  • 返回一个新的合并后的字典,原始字典 dict1 和 dict2 不会被修改
  • 一行代码中完成字典合并的简洁方式,适用于不修改原始字典的情况
  • 合并任意数量的字典
dict1 = {'a': 1, 'b': 2}
dict2 = {'c': 3, 'd': 4}

merged_dict = {**dict1, **dict2}
print(f"dict1:{dict1}")
print(f"dict2:{dict2}")
print(merged_dict)  # 输出: {'a': 1, 'b': 2, 'c': 3, 'd': 4}

截图如下:

在这里插入图片描述

3. dict.update()

update()方法可以用来将一个字典的键值对添加到另一个字典中

  • 修改了原始字典 dict1,dict2 的键值对被添加到了 dict1 中,但不会创建新的字典
  • 原地修改原始字典的方式,适用于需要在原始字典上进行更新的情况
  • 只能用于将一个字典的内容更新到另一个字典中
dict1 = {'a': 1, 'b': 2}
dict2 = {'c': 3, 'd': 4}

dict1.update(dict2)

print(f"dict1:{dict1}")
print(f"dict2:{dict2}")

截图如下:

在这里插入图片描述

4. collections.ChainMap

collections.ChainMap允许将多个字典链在一起,形成一个逻辑上的单一映射

from collections import ChainMap

dict1 = {'a': 1, 'b': 2}
dict2 = {'c': 3, 'd': 4}

merged_dict = ChainMap(dict1, dict2)
print(f"dict1:{dict1}")
print(f"dict2:{dict2}")
print(dict(merged_dict))  # 输出: {'a': 1, 'b': 2, 'c': 3, 'd': 4}

截图如下:

在这里插入图片描述

5. collections.defaultdict

collections.defaultdict可以用于创建一个默认字典,可以方便地合并两个字典

from collections import defaultdict

dict1 = {'a': 1, 'b': 2}
dict2 = {'c': 3, 'd': 4}

merged_dict = defaultdict(int, dict1)
for key, value in dict2.items():
    merged_dict[key] += value

print(f"dict1:{dict1}")
print(f"dict2:{dict2}")
print(dict(merged_dict))  # 输出: {'a': 1, 'b': 2, 'c': 3, 'd': 4}

截图如下:

在这里插入图片描述

不过这种合并,如果值同样的时候,不是强覆盖而是相加

from collections import defaultdict

dict1 = {'a': 1, 'b': 2}
dict2 = {'a': 2, 'd': 4}

merged_dict = defaultdict(int, dict1)
for key, value in dict2.items():
    merged_dict[key] += value

print(dict(merged_dict)) # 输出:  {'a': 3, 'b': 2, 'd': 4}

截图如下:

在这里插入图片描述

6. 彩蛋(不覆盖合并)

对于上述的字典遇到同样的键会强行覆盖,如果需要两个同样的键,但不同的value值

方法一:使用新的key值

for key, value in tmp.items():
    if key not in res:
    # 此处不同键 则直接添加字典
        res[key] = value
    else:
    # 如果同键,则弄成一个新的key值,后续处理的时候,通过新旧key值的差异,在统一筛选过滤!
        # 计算重复次数
        count = 1
        new_key = f"{key}{count}"
        while new_key in res:
            count += 1
            new_key = f"{key}{count}i"
        res[new_key] = value  # 使用带计数的新键存储值

具体移除key值,可以通过如下方式:

if k.endswith('i'):  # 如果键以 'i' 结尾
    new_k = k[:-1]  # 移除 'i'

方法二:转换为列表拼接

or key, value in tmp.items():
    if key in res:
        if not isinstance(res[key], list):
            # 如果值不是列表,将其转换为列表
            res[key] = [res[key]]
        res[key].append(value)  # 追加新值到列表中
    else:
        res[key] = value  # 如果键不存在,直接添加键值对到字典中

以上就是python实现字典合并的五种方法的详细内容,更多关于python字典合并的资料请关注脚本之家其它相关文章!

相关文章

  • Python Pycurl的属性与方法案例详解

    Python Pycurl的属性与方法案例详解

    这篇文章主要介绍了Python Pycurl的属性与方法案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • pandas.DataFrame.to_json按行转json的方法

    pandas.DataFrame.to_json按行转json的方法

    今天小编就为大家分享一篇pandas.DataFrame.to_json按行转json的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • Python中将列表转化为链表的方法详解

    Python中将列表转化为链表的方法详解

    这篇文章主要介绍了Python中将列表转化为链表的方法详解,本文的主要问题是输入一组数,将其按照顺序添加到链表中,文中提供了解决思路与部分实现代码,需要的朋友可以参考下
    2023-11-11
  • python实现计算器功能

    python实现计算器功能

    这篇文章主要为大家详细介绍了python实现计算器功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • matplotlib绘制直方图的基本配置(万能模板案例)

    matplotlib绘制直方图的基本配置(万能模板案例)

    本文主要介绍了matplotlib绘制直方图的基本配置(万能模板案例),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • Python开发的单词频率统计工具wordsworth使用方法

    Python开发的单词频率统计工具wordsworth使用方法

    wordsworth是字母,单词和n元组频率分析,用来分析文件中的单词出现频率的工具。
    2014-06-06
  • 基于python实现生成指定大小txt文档

    基于python实现生成指定大小txt文档

    这篇文章主要介绍了基于python实现生成指定大小txt文档,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • Python进程间通信Queue实例解析

    Python进程间通信Queue实例解析

    这篇文章主要介绍了Python进程间通信Queue实例解析,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • python缺失值填充方法示例代码

    python缺失值填充方法示例代码

    常见的数据缺失填充方式分为很多种,比如删除法、均值法、回归法、KNN、MICE、EM等,下面这篇文章主要给大家介绍了关于python缺失值填充方法的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-12-12
  • Python使用py2exe打包程序介绍

    Python使用py2exe打包程序介绍

    这篇文章主要介绍了Python使用py2exe打包程序介绍,本文讲解了py2exe简介、安装、用法、指定额外文件等内容,需要的朋友可以参考下
    2014-11-11

最新评论