【Python探索之旅】字典

字典的基本特性

創建字典

?修改字典

添加鍵值對?

?刪除鍵值對

字典方法

?遍歷字典

?完結撒花?

前言

字典是 Python 中內建的一種具有彈性儲存能力的數據結構,可存儲任意類型對象,與序列使用整數索引不同,它使用鍵(key)進行索引。

通常任何不變類型的對象均可作為索引,比如數字,字符串和元組,列表可以被修改,不可作為鍵。由于鍵作為索引使用,所以它必須是唯一的。

字典的每個鍵都有對應的值 (value),鍵值對用冒號 “:” 分割,每個鍵值對之間用逗號 “,” 分割,整個字典包括在花括號 {} 中。

注意:dict?作為 Python 的關鍵字和內置函數,變量名不建議命名為?dict?

字典的基本特性

  1. 無序性:字典中的元素沒有固定的順序,這意味著你不能通過索引來訪問字典中的元素。
  2. 可變性:字典是可變的,你可以添加、刪除或修改字典中的鍵值對。
  3. 鍵的唯一性:字典中的鍵是唯一的,不允許重復。如果嘗試添加重復的鍵,新的值會覆蓋舊的值。
  4. 鍵的不可變性:字典的鍵必須是不可變的,如字符串、數字或元組等。值可以是任何類型,包括列表、字典或其他可變類型。

字典的性能

字典的查找、插入和刪除操作的平均時間復雜度為O(1),這使得字典成為處理大量數據時的理想選擇。字典的實現基于哈希表,它通過計算鍵的哈希值來快速定位鍵值對。

字典的應用場景

字典在許多場景中都非常有用,例如:

  • 數據庫查詢:將查詢結果存儲為字典,便于訪問和處理。
  • 配置文件:使用字典來存儲程序的配置選項。
  • 數據分析:在數據處理和分析中,字典常用于存儲和處理統計數據。
  • 緩存系統:字典可以作為緩存系統的基礎,快速存儲和檢索數據。

字典的注意事項

  • 字典的鍵必須是不可變的,如果嘗試使用可變對象作為鍵,會導致錯誤。
  • 字典的鍵是唯一的,如果添加重復的鍵,新的值會覆蓋舊的值。
  • 字典是無序的,如果需要有序的字典,可以使用?collections.OrderedDict

?

?創建字典

# 創建一個空字典
empty_dict = {}# 創建一個帶有鍵值對的字典
dict_with_values = {'name': 'Alice', 'age': 30, 'city': 'New York'}

可以使用方括號 [] 運算符訪問字典中的,其中方括號內指定要訪問的鍵:?

person = {'name': 'Alice', 'age': 30, 'city': 'New York'}
print(person['name'])  # 輸出: Alice

?修改字典

字典是可變的,可以通過鍵來修改對應的值:

person = {'name': 'Alice', 'age': 30, 'city': 'New York'}
person['age'] = 31  # 修改年齡
print(person)  # 輸出: {'name': 'Alice', 'age': 31, 'city': 'New York'}

添加鍵值對?

在Python,我們可以通過三種方式來添加字典的鍵值對分別是方括號 [] 運算符、update() 方法

setdefault() 方法

setdefault() 方法將指定鍵及其默認值添加到字典中。如果鍵已存在,則返回其值。

# 使用方括號運算符
my_dict = {}
my_dict['name'] = 'John Doe'
my_dict['age'] = 30# 使用update()方法
my_dict.update({'salary': 5000, 'department': 'IT'})# 使用setdefault()方法
my_dict.setdefault('address', '123 Main Street')# 打印字典
print(my_dict)

輸出結果

{'name': 'John Doe', 'age': 30, 'salary': 5000, 'department': 'IT', 'address': '123 Main Street'}

請注意,使用 [] 運算符添加鍵值對時,如果鍵已存在,則會覆蓋其值。使用 update()setdefault() 方法時,如果鍵已存在,則不會覆蓋其值?

?刪除鍵值對

在Python,我們可以通過三種方式來刪除字典的鍵值對分別是del 語句、pop() 方法、popitem() 方法

示例

# 使用del語句
my_dict = {'name': 'John Doe', 'age': 30, 'salary': 5000}
del my_dict['age']# 使用pop()方法
my_dict.pop('salary')# 使用popitem()方法
my_dict.popitem()# 打印字典
print(my_dict)

輸出

{'name': 'John Doe'}

?請注意,使用 del 語句刪除鍵值對后,該鍵值對將從字典中永久刪除。使用 pop()popitem() 方法刪除鍵值對后,可以將返回的鍵值對重新添加到字典中。

?

字典方法

Python提供了多種字典方法來操作字典:

dict.keys()返回字典的所有鍵。
dict.values()? ? ? ? ??返回字典的所有值。
dict.items()返回字典的所有鍵值對。
dict.get(key[, default])返回指定鍵的值,如果鍵不存在,則返回默認值(可選)。
dict.pop(key[, default])刪除指定鍵的鍵值對,并返回其值。如果鍵不存在,且提供了默認值,則返回默認值。
dict.popitem()隨機刪除一個鍵值對,并返回該鍵值對。
dict.clear()清空字典中的所有鍵值對。

?遍歷字典

my_dict = {'name': 'John Doe', 'age': 30, 'salary': 5000}for key, value in my_dict.items():print(key, value)

輸出

name John Doe
age 30
salary 5000

請注意,在遍歷字典時,字典的大小和內容可能會發生變化。因此,在遍歷過程中修改字典時要小心。

?完結撒花

Python的字典是一種非常強大和靈活的數據結構,它提供了高效的鍵值對存儲和訪問機制。字典的無序性、可變性和鍵的唯一性使得它在處理復雜數據時非常有用。通過掌握字典的基本操作和方法,可以有效地利用字典來解決實際編程中的問題。

?

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

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

相關文章

小白也會SQL:大模型改變交互方式(上)

在人工智能與自然語言處理交匯點,有一種技術正悄然改變與數據交互的方式——將日常語言轉化為精準SQL查詢。這一“text-to-sql”轉換任務,使非專業人士也能輕松駕馭復雜的數據庫操作,極大地拓寬了數據應用的邊界。 然而,現有前沿…

linux系統查看服務器硬件信息

1、查看服務器型號、序列號 # dmidecode|grep "System Information" -A9 | egrep "Manufacturer|Product|Serial" 2、查看主板型號 # dmidecode |grep -A16 "System Information$" 或 dmidecode -t1 3、查看BIOS信息 # dmidecode -t bios 4、…

學習大數據:論學習Spark的重要性

隨著科技的不斷發展,大數據已經成為了當今社會的熱門話題。大數據技術的出現,為我們提供了處理海量數據的新方法,使得我們能夠從這些數據中挖掘出有價值的信息。在眾多的大數據處理框架中,Apache Spark無疑是最為出色的一種。本文…

部分基于深度學習的主流目標檢測算法

文章目錄 Anchor-Based方法Two-stage目標檢測算法RCNNFast RCNNFaster RCNNFPN(理解為Faster R-CNN中的一個關鍵組件或改進模塊) One-stage目標檢測算法YOLOSSD Anchor-Free方法CornerNetCenterNetFSAFFCOSSAPD 基于transformer的方法DETR 常用數據集Reference 目標檢測是計算機…

vue嵌套路由

一、嵌套 children配置 1.父類路由 mymusic 2.子類路由 musicson 1.創建MusicSon組件 <template><div><p>從前和后來</p><p>唯一</p><p>運氣來的似有若無</p></div> </template><script>export defaul…

linux du 排除 某一個目錄 proc

Linux的du用法排除某個目錄_du -sh 排除目錄-CSDN博客 du -sh /* --exclude"*proc*"

通俗易懂的策略模式講解

什么是策略模式&#xff1f; 策略模式是一種設計模式&#xff0c;它允許你定義一系列的算法&#xff08;策略&#xff09;&#xff0c;并將每個算法封裝成一個對象。這樣&#xff0c;你可以輕松地切換不同的算法&#xff0c;而不需要改變原始代碼。 一個簡單的例子 假設你是…

韻搜坊 -- 前后端聯調實現搜索圖片

文章目錄 后端新建圖片類型Picture創建圖片接口類PictureController新建PictureQueryRequest創建Service類創建實現類PictureServiceImpl 前端添加接口獲取后端數據修改picture頁面內容添加文章&#xff0c;圖片的搜索功能修改查詢參數的獲取&#xff0c;實現查詢用戶功能 存在…

這10款安卓APP,簡直好用到爆!

AI視頻生成&#xff1a;小說文案智能分鏡智能識別角色和場景批量Ai繪圖自動配音添加音樂一鍵合成視頻http://AI視頻生成&#xff1a;小說文案智能分鏡智能識別角色和場景批量Ai繪圖自動配音添加音樂一鍵合成視頻 1.追書——追書神器 追書神器是小說追新大神&#xff0c;全網實…

基于RequestResponseBodyMethodProcessor的Trim功能裝飾者模式實現

文章目錄 前言一、實現1.1 Trim1.2 TrimRequestResponseBodyMethodProcessorDecorator1.3 Configuration 二、測試2.1 測試用例2.2 測試結果2.2.1 Test no.12.2.2 Test no.22.2.3 Test no.32.2.4 Test no.4 前言 公司內部系統老是有人填表單復制粘貼老是整出前后空格來. 前端…

摸魚大數據——大數據導論

大數據導論 1、概念 大數據時代: 萬物皆數據 ? 數據概念: 人類的行為及產生的事件的一種記錄稱之為數據 ? 數據價值: 對數據的內容進行深入分析&#xff0c;可以更好的幫助了解事和物在現實世界的運行規律 2、大數據誕生 大數據的誕生: 跟隨著互聯網的發展的,當全球互聯…

K8S認證 | CKA題庫 + 答案 | 查看Pod CPU資源使用量

2、查看集群中運行Pod CPU資源使用量 您必須在以下Cluster/Node上完成此考題&#xff1a; Cluster Master node Worker node k8s …

【信息系統項目管理師知識點速記】采購管理:實施采購

實施采購過程是項目管理中一個關鍵環節,旨在通過一系列步驟確保項目所需的貨物、服務或成果能夠從合適的供應商處獲得,并以合同形式確立雙方的權利與義務。這一過程不僅關乎選擇最合適的賣方,還包括了風險管理、成本控制、溝通規劃等多個方面的考量。 輸入概述 項目管理計劃…

從零開始精通RTSP之加密

概述 原始的RTSP通信默認使用的是明文傳輸&#xff0c;這也就意味著&#xff0c;在網絡上的任何節點都能輕易地查看或修改傳輸的內容。這在涉及隱私或版權保護的場景下&#xff0c;是完全不可接受的。因此&#xff0c;加密顯得尤為重要。加密的目的主要有三點&#xff1a;一是進…

擰緊設備或工具的選型原則、常見類型和選型關鍵因素有哪些?

智能扭矩系統-智能擰緊系統-扭矩自動控制系統-SunTorque 在工業生產領域&#xff0c;擰緊控制是一項至關重要的工藝環節。它涉及螺栓、螺母等緊固件的裝配過程&#xff0c;直接關系到產品的質量和性能。因此&#xff0c;選擇合適的擰緊設備或工具對于確保擰緊過程的準確性和穩…

[牛客網]——C語言刷題day4

答案&#xff1a;B 解析&#xff1a; a是數組首元素的地址,a1的步長是int&#xff0c;所以是2 &a是數組的首地址&#xff0c;&a1步長是int[5] ptr是int類型的指針&#xff0c;指向a數組的尾后位置&#xff0c;ptr-1的步長是int,所以是a數組的最后一個元素5 答案&am…

如何使用ffmpeg 實現10種特效

相關特效的名字 特效id 特效名 1 向上移動 2 向左移動 3 向下移動 4 顫抖 5 搖擺 6 雨刷 7 彈入 8 彈簧 9 輕微跳動 10 跳動 特效展示(同時匯總相關命令) pad背景顯示 pad背景透明 相關命令(一會再講這些命令&#xff0c;先往下看) # 合成特效語音 ffmpeg -y -loglevel erro…

Element Plus/vue3 無限級導航實現

在使用element plus 時&#xff0c;最初要使用的就是導航組件了&#xff0c;官網上看到的也就是寫死的一級/二級導航&#xff0c;那么如何設計一個無限級且動態的導航呢&#xff1f;毋庸置疑&#xff0c;遞歸。廢話不多說&#xff0c;直接看代碼和效果&#xff1a; 代碼&#x…

Jmeter:錄制腳本(操作文檔)

新建線程組 打開jmeter&#xff0c;右鍵測試計劃–>添加–>Threads(Users)–>點擊"線程組" 添加錄制控制器 右鍵線程組–>添加–>邏輯控制器–>點擊"錄制控制器" 添加HTTP代理服務器 右鍵工作臺–>添加–>非測試元件–>…

YOLOv5改進 | Neck | 添加雙向特征金字塔BiFPN【小白輕松上手 | 論文必備】

&#x1f680;&#x1f680;&#x1f680;本專欄所有的改進均可成功執行&#x1f680;&#x1f680;&#x1f680; 盡管Ultralytics 推出了最新版本的 YOLOv8 模型。但YOLOv5作為一個anchor base的目標檢測的算法&#xff0c;YOLOv5可能比YOLOv8的效果更好。但是針對不同的數據…