欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python實現(xiàn)字典合并的五種方法(附示例代碼)

 更新時間:2024年04月03日 11:25:09   作者:碼農(nóng)研究僧  
在Python中,有多種方法可以通過使用各種函數(shù)和構(gòu)造函數(shù)來合并字典,在本文中,我們將討論一些合并字典的方法,并通過代碼示例講解的非常詳細,具有一定的參考價值,需要的朋友可以參考下

前言

從項目中了解到這個函數(shù):res = {**res, **tmp},也知道是字典的合并,且遇到相同的鍵會進行覆蓋而不是追加

對此詳細了解Python字典合并的多個方法

由于字典的key是唯一的,對應如果出現(xiàn)一樣的,會出現(xiàn)強覆蓋,這一點需要明確

1. 字典拼接

這種方法比較低效,不過也科普下

不能直接對兩個 字典對象使用 + 運算符,需要將 字典轉(zhuǎn)換為列表,然后再進行合并

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 不會被修改
  • 一行代碼中完成字典合并的簡潔方式,適用于不修改原始字典的情況
  • 合并任意數(shù)量的字典
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 中,但不會創(chuàng)建新的字典
  • 原地修改原始字典的方式,適用于需要在原始字典上進行更新的情況
  • 只能用于將一個字典的內(nèi)容更新到另一個字典中
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可以用于創(chuàng)建一個默認字典,可以方便地合并兩個字典

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值,后續(xù)處理的時候,通過新舊key值的差異,在統(tǒng)一篩選過濾!
        # 計算重復次數(shù)
        count = 1
        new_key = f"{key}{count}"
        while new_key in res:
            count += 1
            new_key = f"{key}{count}i"
        res[new_key] = value  # 使用帶計數(shù)的新鍵存儲值

具體移除key值,可以通過如下方式:

if k.endswith('i'):  # 如果鍵以 'i' 結(jié)尾
    new_k = k[:-1]  # 移除 'i'

方法二:轉(zhuǎn)換為列表拼接

or key, value in tmp.items():
    if key in res:
        if not isinstance(res[key], list):
            # 如果值不是列表,將其轉(zhuǎn)換為列表
            res[key] = [res[key]]
        res[key].append(value)  # 追加新值到列表中
    else:
        res[key] = value  # 如果鍵不存在,直接添加鍵值對到字典中

以上就是python實現(xiàn)字典合并的五種方法的詳細內(nèi)容,更多關(guān)于python字典合并的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python Pycurl的屬性與方法案例詳解

    Python Pycurl的屬性與方法案例詳解

    這篇文章主要介紹了Python Pycurl的屬性與方法案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • pandas.DataFrame.to_json按行轉(zhuǎn)json的方法

    pandas.DataFrame.to_json按行轉(zhuǎn)json的方法

    今天小編就為大家分享一篇pandas.DataFrame.to_json按行轉(zhuǎn)json的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Python中將列表轉(zhuǎn)化為鏈表的方法詳解

    Python中將列表轉(zhuǎn)化為鏈表的方法詳解

    這篇文章主要介紹了Python中將列表轉(zhuǎn)化為鏈表的方法詳解,本文的主要問題是輸入一組數(shù),將其按照順序添加到鏈表中,文中提供了解決思路與部分實現(xiàn)代碼,需要的朋友可以參考下
    2023-11-11
  • python實現(xiàn)計算器功能

    python實現(xiàn)計算器功能

    這篇文章主要為大家詳細介紹了python實現(xiàn)計算器功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • matplotlib繪制直方圖的基本配置(萬能模板案例)

    matplotlib繪制直方圖的基本配置(萬能模板案例)

    本文主要介紹了matplotlib繪制直方圖的基本配置(萬能模板案例),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-04-04
  • Python開發(fā)的單詞頻率統(tǒng)計工具wordsworth使用方法

    Python開發(fā)的單詞頻率統(tǒng)計工具wordsworth使用方法

    wordsworth是字母,單詞和n元組頻率分析,用來分析文件中的單詞出現(xiàn)頻率的工具。
    2014-06-06
  • 基于python實現(xiàn)生成指定大小txt文檔

    基于python實現(xiàn)生成指定大小txt文檔

    這篇文章主要介紹了基于python實現(xiàn)生成指定大小txt文檔,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • Python進程間通信Queue實例解析

    Python進程間通信Queue實例解析

    這篇文章主要介紹了Python進程間通信Queue實例解析,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • python缺失值填充方法示例代碼

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

    常見的數(shù)據(jù)缺失填充方式分為很多種,比如刪除法、均值法、回歸法、KNN、MICE、EM等,下面這篇文章主要給大家介紹了關(guān)于python缺失值填充方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-12-12
  • Python使用py2exe打包程序介紹

    Python使用py2exe打包程序介紹

    這篇文章主要介紹了Python使用py2exe打包程序介紹,本文講解了py2exe簡介、安裝、用法、指定額外文件等內(nèi)容,需要的朋友可以參考下
    2014-11-11

最新評論