【Python】09、字典

文章目錄

    • 1. 字典簡介
    • 2. 字典的使用
      • 2.1 字典創建
      • 2.2 字典值獲取
      • 2.3 字典值修改
      • 2.4 字典的刪除
    • 3. 字典的遍歷

1. 字典簡介

字典(dict)屬于一種新的數據結構,稱為映射(mapping)。

  • 字典的作用和列表類似,但是查詢性能比列表好;
  • 在字典中每個元素都有一個唯一的名字(key),可以通過這個名字進行快速查找指定元素(value),字典也稱為鍵值對(key-value)結構;
  • 字典中可以有多個鍵值對,每個鍵值對稱為一項(item)

2. 字典的使用

2.1 字典創建

  • 使用 {[key:value,key:value]} 來創建字典,key,value不傳時創建的是空字典
d = {} # 創建空字典print(d,type(d))# 結果:
{} <class 'dict'>***Repl Closed***
  • 字典的鍵可以是任意的不可變對象(int、str、bool、tuple…)
  • 字典的鍵不能重復,如果重復,后面出現的會替換掉前面的
d = {
'sort':1,
'name':'張三',
'name':'李四',
'age':25,
'sex':'male',
}print(d)# 結果:
{'sort': 1, 'name': '李四', 'age': 25, 'sex': 'male'}***Repl Closed***
  • 使用dict()函數創建字典
    這種方式創建的字典,key都是字符串
d = dict(sort = 1,name = '張三',age = 25)
print(d)# 結果:
{'sort': 1, 'name': '張三', 'age': 25}***Repl Closed***
  • 將一個包含雙值子序列的序列轉換為字典
    雙值序列指的值序列中有且只有兩個元素
d = dict([('sort',1),('name','張三'),('age',25)])
print(d)# 結果:
{'sort': 1, 'name': '張三', 'age': 25}***Repl Closed***

2.2 字典值獲取

  • 通過 d[key] 的方式獲取值
    如果key不存在,則會報 KeyError的錯
d = {
'sort':1,
'name':'張三',
'name':'李四',
'age':25,
'sex':'male',
}# 根據key獲取值
print(d['sort'])
print(d['name'])
print(d['age'])
print(d['sex'])# 結果:
1
李四
25
male***Repl Closed***
  • get(key[,default]) 根據鍵來獲取字典中的值
    如果過去的鍵在字典中不存在,會返回None,如果default傳遞了值,key不存在時則返回設置的默認值
d = {
'sort':1,
'name':'張三',
'name':'李四',
'age':25,
'sex':'male',
}print(d.get('age'))
print(d.get('add','默認值'))# 結果:
25
默認值***Repl Closed***

2.3 字典值修改

  • 語法:d[key] = value
    當key存在時,將key對應的值修改為value,如果key不存在,則直接在字典中增加
d = {
'sort':1,
'name':'張三',
'name':'李四',
'age':25,
'sex':'male',
}d['name'] = '王五'
d['add'] = 'World'print(d)# 結果:
{'sort': 1, 'name': '王五', 'age': 25, 'sex': 'male', 'add': 'World'}***Repl Closed***
  • setdefault(key[,default]) 向字典中添加key-value,這個方法有返回值
    如果key已經存在字典中,則返回key的值,不對字典進行任何操作
    如果key不存在,則向字典中添加這個key,并設置value
d = {
'sort':1,
'name':'張三',
'name':'李四',
'age':25,
'sex':'male',
}result = d.setdefault('name','趙六')
print(result)result = d.setdefault('add','world')
print(result)
print(d)# 結果:
李四
world
{'sort': 1, 'name': '李四', 'age': 25, 'sex': 'male', 'add': 'world'}***Repl Closed***
  • update([other]) 將其它字典中的key-value添加到當前字典中
    注意: 如果兩個字典中存在相同key,那么值會被替換
a = {'id':1,'name':'Mike','score':100}
a_2 = {'time':'2025-03','user':'Json'}a.update(a_2)
print('輸出a:',a)# 相同 key會被替換
d = {'sort':1,'name':'張三','age':25,'sex':'male'}
d_2 = {'sort':2,'name':'王五','age':26,'sex':'male'}d.update(d_2)
print('輸出d:',d)# 結果:
輸出a: {'id': 1, 'name': 'Mike', 'score': 100, 'time': '2025-03', 'user': 'Json'}
輸出d: {'sort': 2, 'name': '王五', 'age': 26, 'sex': 'male'}***Repl Closed***

2.4 字典的刪除

  • 使用del d[key] 刪除字典中key-value
    key不存在時會報錯
d = {'sort':1,'name':'張三','age':25,'sex':'male'}del d['sort']
print('輸出d:',d)# 結果
輸出d: {'name': '張三', 'age': 25, 'sex': 'male'}***Repl Closed***
  • popitem() 隨機刪除字典中一個鍵值對,一般都是刪除最后一個鍵值對
  1. 這個方法有返回值,會將刪除的key-value作為一個元組返回
  2. 如果字典為空時調用,會報錯
d = {'sort':1,'name':'張三','age':25,'sex':'male'}d.popitem()
print('輸出d:',d)# 結果
輸出d: {'sort': 1, 'name': '張三', 'age': 25}***Repl Closed***
  • pop(key[,default]) 根據key 刪除字典中的項
  1. 這個方法有返回值,會將被刪除的值返回
  2. 如果key不存在字典中,會報錯,如果指定了默認值,key不存在時會返回默認值
d = {'sort':1,'name':'張三','age':25,'sex':'male'}res = d.pop('sort')
res_add =  d.pop('add','默認值')print('輸出d:',d)
print('輸出res:',res)
print('輸出res_add:',res_add)# 結果:
輸出d: {'name': '張三', 'age': 25, 'sex': 'male'}
輸出res: 1
輸出res_add: 默認值***Repl Closed***
  • clear() 清空字典
d = {'sort':1,'name':'張三','age':25,'sex':'male'}d.clear()
print('輸出d:',d)# 結果
輸出d: {}***Repl Closed***
  • copy() 用于對字典進行淺復制
  1. 復制出來的對象是獨立的,修改一個不會影響另外一個
  2. 淺復制會簡單的復制對象內部的值,如果字典中的值也是一個可變對象,這個可變對象不會被復制
d = {'sort':1,'name':'張三','age':25,'sex':'male'}
d_2 = d.copy()print('輸出d:',d,id(d))
print('輸出d_2:',d_2,id(d_2))# 結果
輸出d: {'sort': 1, 'name': '張三', 'age': 25, 'sex': 'male'} 2576443365312
輸出d_2: {'sort': 1, 'name': '張三', 'age': 25, 'sex': 'male'} 2576443758976***Repl Closed***
  • len() 獲取字典中鍵值對的個數
d = {
'sort':1,
'name':'張三',
'name':'李四',
'age':25,
'sex':'male',
}print(len(d))# 結果:
4***Repl Closed***
  • in 和 not in 檢查字典中是否包含指定的鍵
d = {
'sort':1,
'name':'張三',
'name':'李四',
'age':25,
'sex':'male',
}print('字典中是否包含age:','age' in d)
print('字典中是否包含add:','add' in d)# 結果
字典中是否包含age: True
字典中是否包含add: False***Repl Closed***

3. 字典的遍歷

  1. keys() 該方法會返回字典的所有key
    這個方法會返回一個序列,序列中會包含序列中所有的鍵
d = {'sort':1,'name':'張三','age':25,'sex':'male'}
d_keys = d.keys()print('輸出:',d_keys)# 結果:
輸出: dict_keys(['sort', 'name', 'age', 'sex'])***Repl Closed***# 遍歷獲取所有值
d = {'sort':1,'name':'張三','age':25,'sex':'male'}for s in d.keys() : print(d[s])# 結果
1
張三
25
male***Repl Closed***
  1. values() 該方法會返回字典的所有的值
# 遍歷獲取所有值
d = {'sort':1,'name':'張三','age':25,'sex':'male'}for s in d.values() : print(s)# 結果
1
張三
25
male***Repl Closed***
  1. items() 該方法會返回字典中的所有項,返回形式為序列,序列中包含雙值子序列
d = {'sort':1,'name':'張三','age':25,'sex':'male'}for s,v in d.items() : print(s,':',v)# 結果:
sort : 1
name : 張三
age : 25
sex : male***Repl Closed***

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

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

相關文章

【貪心算法4】

力扣452.用最少數量的剪引爆氣球 鏈接: link 思路 這道題的第一想法就是如果氣球重疊得越多那么用箭越少&#xff0c;所以先將氣球按照開始坐標從小到大排序&#xff0c;遇到有重疊的氣球&#xff0c;在重疊區域右邊界最小值之前的區域一定需要一支箭&#xff0c;這道題有兩…

SGMEA: Structure-Guided Multimodal Entity Alignment

3 Method 3.1 Problem Definition 3.2 Framework Description 總體框架如圖2所示&#xff0c;由三個主要部分組成&#xff1a;初始嵌入采集模塊、結構引導模塊和模態融合模塊。 3.3 Initial Embedding Acquisition 3.3.1 Structural Embedding 3.3.2 Relation, Attribute, …

KY-038 聲音傳感器如何工作以及如何將其與 ESP32 連接

想為您的項目賦予聲音感!然后跟著做,因為在這個項目中,我們將連接一個聲音傳感器,用它構建一些有趣的項目。我們使用的 KY-038 聲音傳感器使用電容式麥克風來檢測聲波,這為我們提供了穩定性和可靠性的完美平衡。因此,在本文中,我們決定將 KY-038 傳感器與 ESP32 連接,并…

《基于超高頻RFID的圖書館管理系統的設計與實現》開題報告

一、研究背景與意義 1.研究背景 隨著信息化時代的到來&#xff0c;運用計算機科學技術實現圖書館的管理工作已成為優勢。更加科學地管理圖書館會大大提高工作效率。我國的圖書管理體系發展經歷了三個階段&#xff1a;傳統圖書管理模式、現代圖書管理模式以及基于無線射頻識別&…

[local-file-system]基于服務器磁盤的本地文件存儲方案

[local-file-system]基于服務器磁盤的本地文件存儲方案 僅提供后端方案 github 環境 JDK11linux/windows/mac 應用場景 適用于ToB業務&#xff0c;中小企業的單體服務&#xff0c;僅使用磁盤存儲文件的解決方案 僅使用服務器磁盤存儲 與業務實體相結合的文件存儲方案&…

P5708 【深基2.習2】三角形面積(洛谷—python)

題目描述 一個三角形的三邊長分別是 a、b、c&#xff0c;那么它的面積為 p(p?a)(p?b)(p?c)?&#xff0c;其中 p21?(abc)。輸入這三個數字&#xff0c;計算三角形的面積&#xff0c;四舍五入精確到 1 位小數。 輸入格式 第一行輸入三個實數 a,b,c&#xff0c;以空格隔開…

智慧加油站小程序數據庫設計文檔

智慧加油站系統 - 數據庫與API設計文檔 1. 數據庫設計 1.1 ER模型 系統的核心實體關系如下&#xff1a; 用戶(User) ---< 訂單(Order) ---< 加油記錄(RefuelRecord)| | || | vv v …

C++博客分享

本周的一些 C視頻分享, 或許后續會做一些內容總結. 博客 Polymorphic, Defaulted EqualityConstexpr factors_ofC26: Removing language featuresBypassing the branch predictor Meeting C 2024 Clean CMake for C (library) developers - Kerstin KellerAn Introduction …

【藍橋杯每日一題】3.16

&#x1f3dd;?專欄&#xff1a; 【藍橋杯備篇】 &#x1f305;主頁&#xff1a; f狐o貍x 目錄 3.9 高精度算法 一、高精度加法 題目鏈接&#xff1a; 題目描述&#xff1a; 解題思路&#xff1a; 解題代碼&#xff1a; 二、高精度減法 題目鏈接&#xff1a; 題目描述&…

vue 仿deepseek前端開發一個對話界面

后端&#xff1a;調用deepseek的api&#xff0c;所以返回數據格式和deepseek相同 {"model": "DeepSeek-R1-Distill-Qwen-1.5B", "choices": [{"index": 0, "delta": {"role": "assistant", "cont…

SpringMVC(五)攔截器

目錄 攔截器基本概念 一 單個攔截器的執行 1 創建攔截器 2 SpringMVC配置&#xff0c;并指定攔截路徑。 3 運行結果展示&#xff1a; 二 多個攔截器的執行順序 三 攔截器與過濾器的區別 攔截器基本概念 SpringMVC內置攔截器機制&#xff0c;允許在請求被目標方法處理的…

Hive SQL 精進系列:PERCENTILE_APPROX 搞定分位數

目錄 一、引言二、percentile_approx 函數基礎2.1 基本語法參數解釋返回值簡單示例 三、應用場景3.1 數據分析與報告3.2 數據清洗與異常值檢測3.3 性能監控與優化 四、使用注意事項4.1 數據類型要求4.2 精度與性能平衡4.3 空值處理 五、總結 一、引言 百分位數作為一種常用的統…

pytorch快速入門——手寫數字分類GPU加速

&#x1f451;主頁&#xff1a;吾名招財 &#x1f453;簡介&#xff1a;工科學碩&#xff0c;研究方向機器視覺&#xff0c;愛好較廣泛… ?&#x1f4ab;簽名&#xff1a;面朝大海&#xff0c;春暖花開&#xff01; pytorch快速入門——手寫數字分類GPU加速 一、tensor1&#…

【開源免費】基于SpringBoot+Vue.JS電商應用系統(JAVA畢業設計)

本文項目編號 T 242 &#xff0c;文末自助獲取源碼 \color{red}{T242&#xff0c;文末自助獲取源碼} T242&#xff0c;文末自助獲取源碼 目錄 一、系統介紹二、數據庫設計三、配套教程3.1 啟動教程3.2 講解視頻3.3 二次開發教程 四、功能截圖五、文案資料5.1 選題背景5.2 國內…

經歷過的IDEA+Maven+JDK一些困惑

注意事項&#xff1a;由于使用過程中是IDEA綁定好另外2個工具&#xff0c;所以報錯統一都顯示在控制臺&#xff0c;但要思考和分辨到底是IDEA本身問題導致的報錯&#xff0c;還是maven導致的 使用前的配置 編輯期 定義&#xff1a;指的是從open projects開始&#xff0c;到執行…

【推理】大模型ReasonGraph:推理路徑的可視化論文及代碼分析

ReasonGraph:推理路徑的可視化 ReasonGraph demo http://192.168.50.197:5001/ 作者的其他論文 ** ** LLM推理方法的相關工作

學習路之TP6 --重寫vendor目錄下的文件(服務覆蓋command---優點:命令前后一致)

學習路之TP6 --重寫vendor目錄下的文件 一、新建命令文件&#xff1a;二、復制修改&#xff1a;Server.php三、新建服務類&#xff1a;WorkmanService.php四、注冊服務五、運行效果 有需求要重寫vendor\topthink\think-worker\src\command\Server.php 以實現修改代碼 一、新建命…

【藍圖使用】繪制mesh頂點的法線

文章目錄 繪制法線Normal準備工作UE5資源制作藍圖制作 參考 繪制法線Normal 參考[1]打算用藍圖走一遍渲染管線&#xff0c;還是可以的 準備工作 Blender制作一個三個頂點的模型 要不要材質無所謂&#xff0c;就一個三個頂點的mesh即可&#xff0c;參考[2] 找到一個法線貼…

【算法學習之路】10.二叉樹

二叉樹 前言一.簡介二.題目123 前言 我會將一些常用的算法以及對應的題單給寫完&#xff0c;形成一套完整的算法體系&#xff0c;以及大量的各個難度的題目&#xff0c;目前算法也寫了幾篇&#xff0c;題單正在更新&#xff0c;其他的也會陸陸續續的更新&#xff0c;希望大家點…

AI軟件棧:推理框架(二)-Llama CPP1

Llama CPP的主要構造&#xff0c;GGUF和GGML為兩個主要部分&#xff0c;包括模型描述文件和模型參數存儲文件 文章目錄 GGUF構建圖讀取權重 GGUF llama.cpp 的作者 Georgi Gerganov 提出的新一代大模型描述文件 GPT-Generated Unified Format&#xff0c;繼承自GGML&#xff0…