【Python】 深入了解 Python 字典的 | 更新操作


我白天是個 搞笑廢物
表演不在乎
夜晚變成 憂傷怪物
撕扯著孤獨
我曾經是個 感性動物
小心地感觸
現在變成 無關人物
?????????????????????🎵
張碧晨/王赫野《何物》


Python 3.9 引入了一種新的字典更新操作,即使用 | 運算符合并字典。這種方式不僅簡潔,而且非常直觀。本文將深入探討這種新特性,展示它的用法和優勢。

什么是字典的 | 更新操作?

在 Python 3.9 之前,合并兩個字典通常需要使用 update() 方法或解構語法。Python 3.9 引入了新的 | 運算符,使得合并字典變得更加簡潔和直觀。

基本用法

假設有兩個字典 dict1 和 dict2,我們希望將它們合并。可以使用 | 運算符來實現這一點:

dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}merged_dict = dict1 | dict2
print(merged_dict)  # 輸出: {'a': 1, 'b': 3, 'c': 4}

在這個示例中,dict1 和 dict2 被合并成了一個新的字典 merged_dict。如果兩個字典中存在相同的鍵,那么 dict2 中的值會覆蓋 dict1 中的值。

進階用法

除了基本的合并操作,我們還可以利用 |= 運算符來原地更新字典:

dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}dict1 |= dict2
print(dict1)  # 輸出: {'a': 1, 'b': 3, 'c': 4}

在這個示例中,dict1 被原地更新,即 dict1 中的內容被 dict2 的內容合并并覆蓋。

與 update() 方法對比

在 Python 3.9 之前,合并字典主要使用 update() 方法:

dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}dict1.update(dict2)
print(dict1)  # 輸出: {'a': 1, 'b': 3, 'c': 4}

雖然 update() 方法可以達到相同的效果,但 | 運算符提供了一種更簡潔的寫法,并且支持鏈式操作:

dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}
dict3 = {'d': 5}merged_dict = dict1 | dict2 | dict3
print(merged_dict)  # 輸出: {'a': 1, 'b': 3, 'c': 4, 'd': 5}

性能對比

在性能方面,| 運算符和 update() 方法在大多數情況下表現相似。但在需要鏈式合并多個字典時,| 運算符可能會更加高效,因為它可以避免創建多個中間字典。

import timeitdict1 = {i: i for i in range(1000)}
dict2 = {i: i + 1000 for i in range(1000, 2000)}# 使用 update 方法
def update_method():d = dict1.copy()d.update(dict2)return d# 使用 | 運算符
def pipe_operator():return dict1 | dict2print(timeit.timeit(update_method, number=10000))  # 使用 update 方法的時間
print(timeit.timeit(pipe_operator, number=10000))  # 使用 | 運算符的時間

適用場景

| 運算符特別適用于以下場景:

合并多個字典:可以簡潔地合并多個字典而不需要創建中間變量。
字典推導:在字典推導中使用 | 運算符可以提高代碼的可讀性和簡潔性。

總結

Python 3.9 引入的字典 | 更新操作為字典的合并提供了一種簡潔、直觀的方式。與傳統的 update() 方法相比,它不僅代碼更簡潔,而且在某些場景下性能更佳。如果你正在使用 Python 3.9 或更高版本,強烈推薦使用這種新特性來處理字典的合并操作。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/45067.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/45067.shtml
英文地址,請注明出處:http://en.pswp.cn/web/45067.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

xshell公鑰免密登錄

設備:一臺linux系統機器,一臺windows系統機器 軟件:xshell 要求:公鑰免密登錄 一、生成公鑰、私鑰 1、打開shell ; 點擊工具 ; 新建用戶生成密鑰向導 2、生成密鑰參數 密鑰類型:RS…

element ui ts table重置排序

#日常# 今天帶的實習生&#xff0c;在遇到開發過程中&#xff0c;遇到了element ui table 每次查詢的時候都需要重置排序方式&#xff0c;而且多個排序是由前端排序。 <el-table :data"tableData" ref"restTable"> </<el-table> <script…

bi項目筆記

1.bi是什么 bi項目就是商業智能系統&#xff0c;也就是數據可視畫、報表可視化系統&#xff0c;如下圖的就是bi項目了 2.技術棧

Linux rsync文件同步工具

scp的不足 1. 性能問題 單線程傳輸 SCP只使用單線程進行傳輸&#xff0c;這意味著在傳輸大文件或大量小文件時&#xff0c;其傳輸速度和效率可能不如其他多線程工具。 無法壓縮數據傳輸 SCP不支持內置的壓縮機制&#xff0c;這在傳輸大文件時會導致帶寬使用效率較低。 2.…

我花了5年時間訓練自己這種能力,希望你也能成功

人生最重要的能力是日拱一卒&#xff0c;即每天做一點點對自己有利的事并持續足夠長的時間。作者之前急于求成&#xff0c;減肥失敗。同事通過每月改進一件小事成功減肥且知識儲備豐富。作者受啟發后&#xff0c;通過走樓梯、換代糖等小改變&#xff0c;用 4 年減了 40 斤&…

Hive的基本操作(創建與修改)

必備知識 數據類型 基本類型 類型寫法字符char, varchar, string?整數tinyint, smallint, int?, bigint?小數float, double, numeric(m,n), decimal(m,n)?布爾值boolean?時間date?, timestamp? 復雜類型(集合類型) 1、數組&#xff1a;array<T> 面向用戶提供…

從頭開始搭建一套Elasticsearch集群

前言 剛開始使用ES接觸的就是rpm或者是云上提供的ES服務&#xff0c;基本上開箱即用。特別是云上的ES服務&#xff0c;開局就是集群版本&#xff0c;提供的是優化后的參數配置、開箱即匹配訪問鑒權及常用插件&#xff0c;如無特殊需要基本上屏蔽了所有細節&#xff0c;直接可投…

深入了解 MySQL 的 EXPLAIN 命令

一、什么是 EXPLAIN 命令&#xff1f; EXPLAIN 命令用于顯示 MySQL 如何執行某個 SQL 語句&#xff0c;尤其是 SELECT 語句。通過 EXPLAIN 命令&#xff0c;可以看到查詢在實際執行前的執行計劃&#xff0c;這對于優化查詢性能至關重要。 二、EXPLAIN 的基本用法 要使用 EXP…

如何禁用鍵盤上的特定鍵或快捷方式?這里有詳細步驟

要禁用特定的鍵盤鍵或快捷鍵嗎&#xff1f;微軟官方應用程序Microsoft PowerToys使這項任務變得非常簡單。以下是使用Microsoft PowerToys中的鍵盤管理器禁用特定鍵或快捷方式的快速指南。 如果你還沒有安裝Microsoft PowerToys 如果你的設備上沒有安裝Microsoft PowerToys&a…

springboot上傳圖片

前端的name的值必須要和后端的MultipartFile 形參名一致 存儲本地

3.2、matlab單目相機標定原理、流程及實驗

1、單目相機標定流程及步驟 單目相機標定是通過確定相機的內部和外部參數,以便準確地在圖像空間和物體空間之間建立映射關系。下面是單目相機標定的流程及步驟: 搜集標定圖像:使用不同角度、距離和姿態拍攝一組標定圖像,并確保標定板(可以是棋盤格或者圓形標定板)完整可…

鴻蒙開發:Universal Keystore Kit(密鑰管理服務)【匿名密鑰證明(C/C++)】

匿名密鑰證明(C/C) 在使用本功能時&#xff0c;需確保網絡通暢。 在CMake腳本中鏈接相關動態庫 target_link_libraries(entry PUBLIC libhuks_ndk.z.so)開發步驟 確定密鑰別名keyAlias&#xff0c;密鑰別名最大長度為64字節&#xff1b;初始化參數集&#xff1a;通過[OH_Huk…

AcWing 667. 游戲時間

讀取兩個整數 A&#x1d434; 和 B&#x1d435;&#xff0c;表示游戲的開始時間和結束時間&#xff0c;以小時為單位。 然后請你計算游戲的持續時間&#xff0c;已知游戲可以在一天開始并在另一天結束&#xff0c;最長持續時間為 2424 小時。 如果 A&#x1d434; 與 B&…

css3 transform的旋轉和位移制作太陽花

css3 transform 實例展示知識點rotate 旋轉translate 位移transform: translate(300px,200px) rotate(90deg) 實例代碼 實例展示 知識點 transform的兩個屬性 rotate 旋轉 translate 位移 transform: translate(300px,200px) rotate(90deg) 實例代碼 <!DOCTYPE html&g…

flask 定時任務(APScheduler)使用current_app app_context()上下文

前言: 描述&#xff1a;flask定時任務調用的方法中使用了current_app.logger.info()記錄日志報錯 報錯代碼 raise RuntimeError(unbound_message) from None RuntimeError: Working outside of application context.This typically means that you attempted to use functiona…

IDEA中Git常用操作及Git存儲原理

Git簡介與使用 Intro Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. Git是一款分布式版本控制系統&#xff08;VSC&#xff09;&#xff0c;是團隊合作開發…

算法學習筆記(8.3)-(0-1背包問題)

目錄 最常見的0-1背包問題&#xff1a; 第一步&#xff1a;思考每輪的決策&#xff0c;定義狀態&#xff0c;從而得到dp表 第二步&#xff1a;找出最優子結構&#xff0c;進而推導出狀態轉移方程 第三步&#xff1a;確定邊界條件和狀態轉移順序 方法一&#xff1a;暴力搜素…

KBS(Knowledge-Based Systems)期刊投稿記錄

記錄一些關鍵時間節點 2023.12.31 投稿 2024.01.30 返回審稿意見 2024.05.20 提交r1 2024.05.31 返回審稿意見(conditional accept)包括語言潤色 2024.06.09 提交r2&#xff0c;沒有使用愛思維爾的潤色 2024.06.10 with editor 2024.06.13 under review 2024.06.24 revise(折磨…

MFC之對話框--線寬/線型/顏色

文章目錄 線寬輸入實現優化無法記錄上一次線粗問題 線寬滑動實現實現選擇線類型實現顏色選擇總結 線寬輸入實現 優化無法記錄上一次線粗問題 線寬滑動實現 實現選擇線類型 實現顏色選擇 總結 1。創建新窗口&#xff08;dialog)會創建一個新的類&#xff0c;在類中實現窗口中的…

vue中父子傳遞屬性值

1、父傳子屬性值 自定義圖庫組件 在add.vue中應用tuku組件并給默認值 效果 2、 子傳父&#xff0c;逆向賦值 add.vue和第一問中一樣 修改tuku組件&#xff0c;傳值給add.vue 3、多個傳遞 效果&#xff1a; 點擊兩個修改按鈕后 4、使用defineModel簡化父子傳值 其他代碼跟…