【Python入門】一篇掌握Python中的字典(創建、訪問、修改、字典方法)【詳細版】

🌈?個人主頁:十二月的貓-CSDN博客
🔥?系列專欄:?🏀《Python/PyTorch極簡課》_十二月的貓的博客-CSDN博客

💪🏻?十二月的寒冬阻擋不了春天的腳步,十二點的黑夜遮蔽不住黎明的曙光?

目錄

1. 前言

2. 字典

2.1 字典的創建

2.1.1 大括號+直接賦值

2.1.2?大括號+字典推導式

2.1.3?dict+關鍵字參數

2.1.4?dict+元組列表

2.1.5?dict+zip方法

2.1.6 dict+fromkeys方法

2.2 字典的訪問

2.2.1?使用鍵訪問字典元素

2.2.2?使用?get()?方法訪問字典元素

2.2.3?元組列表則用元組訪問的方法訪問

2.3 字典的修改

2.3.1?直接修改字典元素

2.3.2?使用?update()?方法修改字典

2.3.3?刪除字典元素

2.3.4?清空字典

2.4 字典方法

2.4.1?keys()

2.4.2?values()

2.4.3?update()

2.4.4?fromkeys()

2.4.5?setdefault()

2.4.6?clear()

2.4.6?copy()

2.4.7?items()

2.4.8?get()

3. 完整示例

4. 總結


1. 前言

  • 👑《零基礎入門PyTorch/Python》專欄持續更新中,未來最少文章數量為60篇。由于專欄剛剛建立,促銷價為9.9。后續將慢慢恢復原價至99.9🍉【在校大學生】評論區留言并私信我免費訂閱
  • 👑《零基礎入門PyTorch/Python》專欄主要針對零基礎入門的小伙伴。不需要Python基礎,不需要深度學習基礎,只要你愿意學,這一個專欄將真正讓你做到零基礎入門。
  • 🔥每例項目都包括理論講解、數據集、源代碼

正在更新中💹💹

🚨項目運行環境:

  • 平臺:Window11
  • 語言環境:Python3.8
  • 運行環境1:PyCharm 2021.3
  • 運行環境2:Jupyter Notebook 7.3.2
  • 框架:PyTorch 2.5.1(CUDA11.8)

2. 字典

????????(Dictionary)是一種內置的數據結構,以鍵值對(key-value pair)的形式存儲數據。在許多Python或PyTorch中常常被使用,例如nn.Sequential等等。因此貓貓有必要寫一篇文章,詳細講講字典的生命全周期。

2.1 字典的創建

????????字典創建的方法本質上就兩種:大括號法dict方法

2.1.1 大括號+直接賦值

這是最常見和直接的方式,直接使用 {} 包裹鍵值對:

my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}

2.1.2?大括號+字典推導式

字典推導式允許你根據某種條件或從其他可迭代對象創建字典:

my_dict = {x: x**2 for x in range(5)}
# 輸出: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

2.1.3?dict+關鍵字參數

你可以使用 dict() 函數來創建字典,通過關鍵字參數來初始化:

my_dict = dict(name='Alice', age=25, city='New York')

2.1.4?dict+元組列表

你可以使用 dict() 函數來創建字典,通過元組列表來初始化:

my_dict = dict([('name', 'Alice'), ('age', 25), ('city', 'New York')])

2.1.5?dict+zip方法

zip() 可以將兩個可迭代對象組合成一個字典,前一個對象作為鍵,后一個對象作為值:

示例一:

keys = ['name', 'age', 'city']
values = ['Alice', 25, 'New York']
my_dict = dict(zip(keys, values))
# 輸出: {'name': 'Alice', 'age': 25, 'city': 'New York'}

?示例二:

dic = dict(zip('abc', [1, 2, 3]))
print(dic)
# 輸出結果:{'a': 1, 'b': 2, 'c': 3}

2.1.6 dict+fromkeys方法

通常用來初始化字典, 設置value的默認值

my_dict = dict.fromkeys(['name', 'age', 'city'], None)
# 輸出: {'name': None, 'age': None, 'city': None}

2.2 字典的訪問

????????字典訪問使用的是中括號([ ])

2.2.1?使用鍵訪問字典元素

????????通過字典的鍵來訪問對應的值。如果鍵不存在,會拋出 KeyError 錯誤

my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}
# 訪問 'name' 鍵對應的值
print(my_dict['name'])  # 輸出: Alice

利用[]中括號來訪問鍵值對的值?

2.2.2?使用?get()?方法訪問字典元素

????????get() 方法可以通過鍵來訪問字典的值。如果鍵不存在,它會返回 None,也可以指定一個默認值:

# 使用 get() 方法
print(my_dict.get('name'))  # 輸出: Alice
# 使用 get() 方法訪問不存在的鍵
print(my_dict.get('gender'))  # 輸出: None
# 使用 get() 方法訪問不存在的鍵并設置默認值
print(my_dict.get('gender', 'Not specified'))  # 輸出: Not specified

2.2.3?元組列表則用元組訪問的方法訪問

? ? ? ? 字典的輸出有時候就是元組形式,因此訪問字典可能也就是訪問元組:

tuple_list = [(1, 'a'), (2, 'b'), (3, 'c')]
print(tuple_list[0])  # 輸出: (1, 'a')
print(tuple_list[1])  # 輸出: (2, 'b')
print(tuple_list[0][0])  # 輸出: 1 (訪問第一個元組中的第一個元素)
print(tuple_list[1][1])  # 輸出: 'b' (訪問第二個元組中的第二個元素)

2.3 字典的修改

2.3.1?直接修改字典元素

????????你可以通過直接指定鍵來修改字典中的值。如果鍵不存在,會新增該鍵值對:

my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}# 修改 'age' 鍵對應的值
my_dict['age'] = 26
print(my_dict)  # 輸出: {'name': 'Alice', 'age': 26, 'city': 'New York'}# 如果鍵不存在,添加新的鍵值對
my_dict['gender'] = 'Female'
print(my_dict)  # 輸出: {'name': 'Alice', 'age': 26, 'city': 'New York', 'gender': 'Female'}

2.3.2?使用?update()?方法修改字典

????????update() 方法可以用于修改字典中的元素。你可以傳入一個字典或鍵值對(可以是一個可迭代對象,例如關鍵字參數元組列表):

# 修改現有的鍵值對
my_dict.update({'age': 27, 'city': 'Los Angeles'})
print(my_dict)  # 輸出: {'name': 'Alice', 'age': 27, 'city': 'Los Angeles', 'gender': 'Female'}# 通過傳入鍵值對的元組列表來修改或添加元素
my_dict.update([('age', 28), ('gender', 'Male')])
print(my_dict)  # 輸出: {'name': 'Alice', 'age': 28, 'city': 'Los Angeles', 'gender': 'Male'}

2.3.3?刪除字典元素

????????使用 delpop() 可以刪除字典中的鍵值對:

# 使用 del 刪除鍵值對
del my_dict['city']
print(my_dict)  # 輸出: {'name': 'Alice', 'age': 28, 'gender': 'Male', 'country': 'USA'}
# 使用 pop() 刪除并返回值
removed_value = my_dict.pop('age')
print(removed_value)  # 輸出: 28
print(my_dict)  # 輸出: {'name': 'Alice', 'gender': 'Male', 'country': 'USA'}

2.3.4?清空字典

????????clear() 方法可以清空字典中的所有鍵值對:

# 使用 clear() 清空字典
my_dict.clear()
print(my_dict)  # 輸出: {}

2.4 字典方法

2.4.1?keys()

????????返回字典中所有的鍵:

my_dict = {'a': 1, 'b': 2}
print(my_dict.keys())  # 輸出: dict_keys(['a', 'b'])

2.4.2?values()

????????返回字典中所有的值:

my_dict = {'a': 1, 'b': 2}
print(my_dict.values())  # 輸出: dict_values([1, 2])

2.4.3?update()

????????更新字典,可以傳入另一個字典、鍵值對或可迭代的鍵值對序列。如果鍵已經存在,會更新值;如果鍵不存在,會添加新鍵值對

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

2.4.4?fromkeys()

????????創建一個新字典,以指定的鍵創建字典,并為每個鍵設置默認值。可以傳遞一個可迭代對象作為鍵和一個可選的默認值:

keys = ['a', 'b', 'c']
new_dict = dict.fromkeys(keys, 0)
print(new_dict)  # 輸出: {'a': 0, 'b': 0, 'c': 0}

2.4.5?setdefault()

????????如果鍵不存在于字典中,則將其添加,并將值設置為提供的默認值。如果鍵已經存在,則不對該鍵做任何修改:

my_dict = {'a': 1, 'b': 2}
print(my_dict.setdefault('c', 3))  # 輸出: 3
print(my_dict.setdefault('a', 3))  # 輸出: 1

2.4.6?clear()

????????清空字典中的所有元素:

my_dict = {'a': 1, 'b': 2}
my_dict.clear()
print(my_dict)  # 輸出: {}

2.4.6?copy()

????????返回字典的淺拷貝。拷貝后的字典不會影響原字典:

my_dict = {'a': 1, 'b': 2}
new_dict = my_dict.copy()
print(new_dict)  # 輸出: {'a': 1, 'b': 2}

2.4.7?items()

????????返回字典中所有鍵值對,以元組列表的形式返回。可以用于遍歷字典:

my_dict = {'a': 1, 'b': 2}
print(my_dict.items())  # 輸出: dict_items([('a', 1), ('b', 2)])

2.4.8?get()

????????返回指定鍵的值,如果鍵不存在,返回 None(或指定的默認值):

my_dict = {'a': 1, 'b': 2}
print(my_dict.get('a'))  # 輸出: 1
print(my_dict.get('c', 'Not Found'))  # 輸出: 'Not Found'

3. 完整示例

????????下面是一個完整的 Python 示例,展示了字典的創建、修改、訪問以及使用一些常見的字典方法:

# 創建字典
student = {"name": "Alice",        # 鍵值對: "name" -> "Alice""age": 20,              # 鍵值對: "age" -> 20"courses": ["Math", "Science"],  # 鍵值對: "courses" -> ["Math", "Science"]
}# 訪問字典的值
print("Name:", student["name"])  # 輸出: Alice
print("Age:", student.get("age"))  # 輸出: 20# 使用 get 方法訪問一個不存在的鍵,提供默認值
print("Gender:", student.get("gender", "Not Specified"))  # 輸出: Not Specified# 修改字典中的值
student["age"] = 21  # 修改 age 的值
print("Updated Age:", student["age"])  # 輸出: 21# 向字典中添加新的鍵值對
student["address"] = "123 Main St"
print("Address:", student["address"])  # 輸出: 123 Main St# 使用 update() 方法修改多個鍵值對
student.update({"name": "Bob", "age": 22})
print("Updated Name:", student["name"])  # 輸出: Bob
print("Updated Age:", student["age"])  # 輸出: 22# 使用 keys(), values(), items() 方法
print("Keys:", student.keys())  # 輸出: dict_keys(['name', 'age', 'courses', 'address'])
print("Values:", student.values())  # 輸出: dict_values(['Bob', 22, ['Math', 'Science'], '123 Main St'])
print("Items:", student.items())  # 輸出: dict_items([('name', 'Bob'), ('age', 22), ('courses', ['Math', 'Science']), ('address', '123 Main St')])# 刪除字典中的鍵值對
student.pop("address")  # 刪除 "address" 鍵值對
print("After pop:", student)  # 輸出: {'name': 'Bob', 'age': 22, 'courses': ['Math', 'Science']}# 使用 popitem() 刪除并返回字典中的最后一個鍵值對
last_item = student.popitem()
print("Popped item:", last_item)  # 輸出: ('courses', ['Math', 'Science'])# 清空字典
student.clear()
print("After clear:", student)  # 輸出: {}# 使用 fromkeys 創建一個新字典
new_dict = dict.fromkeys(["a", "b", "c"], 0)
print("New Dictionary:", new_dict)  # 輸出: {'a': 0, 'b': 0, 'c': 0}
  1. 字典創建:我們使用大括號?{}?來創建字典,并指定鍵值對。字典的鍵是唯一的,值可以是任何數據類型。
  2. 訪問字典的值:我們通過?dict[key]?或?dict.get(key)?來訪問字典中的值。get()?方法可以提供默認值以避免鍵不存在時報錯。
  3. 修改字典的值:通過?dict[key] = value?可以修改字典中的值。
  4. 添加新的鍵值對:使用相同的方式通過鍵來添加新的鍵值對。
  5. 使用?update()?方法:可以批量更新字典中的多個鍵值對。
  6. 遍歷字典:通過?keys()?獲取所有的鍵,values()?獲取所有的值,items()?獲取所有的鍵值對。
  7. 刪除字典元素:使用?pop()?刪除指定的鍵值對,popitem()?刪除并返回最后一個鍵值對。
  8. 清空字典clear()?方法會刪除字典中的所有元素。
  9. 創建新字典fromkeys()?方法通過指定的鍵創建新字典,并可以為每個鍵指定一個默認值。

4. 總結

【如果想學習更多深度學習文章,可以訂閱一下熱門專欄】

  • 《Python/PyTorch極簡課》_十二月的貓的博客-CSDN博客
  • 《深度學習理論直覺三十講》_十二月的貓的博客-CSDN博客
  • 《小白讀透AI原理》_十二月的貓的博客-CSDN博客

如果想要學習更多pyTorch/python編程的知識,大家可以點個關注并訂閱,持續學習、天天進步你的點贊就是我更新的動力,如果覺得對你有幫助,辛苦友友點個贊,收個藏呀~~~

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

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

相關文章

每日一題——兩數相加

兩數相加 問題描述問題分析解題思路代碼實現代碼解析注意事項示例運行總結 問題描述 給定兩個非空鏈表,表示兩個非負整數。鏈表中的每個節點存儲一個數字,數字的存儲順序為逆序(即個位在鏈表頭部)。要求將這兩個數字相加&#xff…

制作自定義鏡像

1. 確定軟件包 確定自己的環境都需要哪些命令,然后,從鏡像文件或者yum源下載響應的安裝包。 bash基本是必選的 (bash-5.1.8-10.oe2203sp2.aarch64.rpm) vim也是有必要的 (vim-enhanced-9.0-15.oe2203sp2.aarch64.rpm…

WHAT - 前端性能指標

目錄 核心 Web Vitals(Core Web Vitals)加載性能指標網絡相關指標交互和響應性能指標內存與效率指標推薦的監控工具優化策略與建議推薦學習路線 作為前端開發者,理解并掌握關鍵的性能指標對優化 Web 應用至關重要。 以下是前端性能優化中常見…

C++20 模塊:告別頭文件,迎接現代化的模塊系統

文章目錄 引言一、C20模塊簡介1.1 傳統頭文件的局限性1.2 模塊的出現 二、模塊的基本概念2.1 模塊聲明2.2 模塊接口單元2.3 模塊實現單元 三、模塊的優勢3.1 編譯時間大幅減少3.2 更好的依賴管理3.3 命名空間隔離 四、如何使用C20模塊4.1 編譯器支持4.2 示例項目4.3 編譯和運行…

Apache Hudi 性能測試報告

一、測試背景 數據湖作為一個集中化的數據存儲倉庫,支持結構化、半結構化以及非結構化等多種數據格式,數據來源包含數據庫數據、增量數據、日志數據以及數倉上的存量數據等。數據湖能夠將這些不同來源、不同格式的數據集中存儲和管理在高性價比的分布式存儲系統中,對外提供…

sql靶場5-6關(報錯注入)保姆級教程

目錄 sql靶場5-6關(報錯注入)保姆級教程 1.第五關 1.步驟一(閉合) 2.步驟二(列數) 3.報錯注入深解 4.報錯注入格式 5.步驟三(數據庫表名) 6.常用函數 7.步驟四(表…

OSPF-單區域的配置

一、單區域概念: 單區域OSPF中,整個網絡被視為一個區域,區域ID通常為0(骨干區域)。所有的路由器都在這個區域內交換鏈路狀態信息。 補充知識點: OSPF為何需要loopback接口: 1.Loopback接口的…

LeetCode100之二叉樹的直徑(543)--Java

1.問題描述 給你一棵二叉樹的根節點,返回該樹的 直徑 。 二叉樹的 直徑 是指樹中任意兩個節點之間最長路徑的 長度 。這條路徑可能經過也可能不經過根節點 root 。 兩節點之間路徑的 長度 由它們之間邊數表示。 示例1 輸入:root [1,2,3,4,5] 輸出&#…

C語言每日一練——day_4

引言 針對初學者,每日練習幾個題,快速上手C語言。第四天。(連續更新中) 采用在線OJ的形式 什么是在線OJ? 在線判題系統(英語:Online Judge,縮寫OJ)是一種在編程競賽中用…

工作流編排利器:Prefect 全流程解析

工作流編排利器:Prefect 全流程解析 本文系統講解了Prefect工作流編排工具,從基礎入門到高級應用,涵蓋任務與流程管理、數據處理、執行器配置、監控調試、性能優化及與其他工具集成等內容,文末項目實戰示例,幫助讀者全…

Web Workers 客戶端 + 服務端應用

一. Web Workers 客戶端應用 使用 JavaScript 創建 Web Worker 的步驟如下: 1.創建一個新的 JavaScript 文件,其中包含要在工作線程中運行的代碼(耗時任務)。該文件不應包含對 DOM 的引用,因為在工作線程中無法訪問 …

大模型工具Ollama存在安全風險

國家網絡安全通報中心:大模型工具Ollama存在安全風險 來源:國家網絡與信息安全信息通報中心 3月3日,國家網絡安全通報中心發布關于大模型工具Ollama存在安全風險的情況通報,內容如下: 據清華大學網絡空間測繪聯合研…

LINUX系統安裝+添加共享目錄

一、前言 Windows或mac系統中創建Linux工作環境是基于VMware和SL(Scientific Linux),下面分別安裝二者。 二、VMware軟件安裝及注冊 1、雙擊VMware安裝包 2、點擊下一步 3、 勾選接受許可,并點擊下一步 4、更改路徑(建議更改為容易找到的路…

BI 工具響應慢?可能是 OLAP 層拖了后腿

在數據驅動決策的時代,BI 已成為企業洞察業務、輔助決策的必備工具。然而,隨著數據量激增和分析需求復雜化,BI 系統“卡”、“響應慢”的問題日益突出,嚴重影響分析效率和用戶體驗。 本文將深入 BI 性能問題的根源,并…

基于SSM+Vue的汽車維修保養預約系統+LW示例

1.項目介紹 系統角色:管理員、員工、用戶功能模塊:用戶管理、員工管理、汽車類型管理、項目類型管理、維修/預約訂單管理、系統管理、公告管理等技術選型:SSM,vue(后端管理web),Layui&#xff…

在rocklinux里面批量部署安裝rocklinx9

部署三臺Rockylinux9服務器 實驗要求 1. 自動安裝ubuntu server20以上版本 2. 自動部署三臺Rockylinux9服務器,最小化安裝,安裝基礎包,并設定國內源,設靜態IP 實驗步驟 安裝軟件 # yum源必須有epel源 # dnf install -y epel-re…

Oxidized收集H3C交換機網絡配置報錯,not matching configured prompt (?-mix:^(<CD>)$)

背景:問題如上標題,H3C所有交換機配置的model都是comware 解決方案: 1、找到compare.rb [rootoxidized model]# pwd /usr/local/lib/ruby/gems/3.1.0/gems/oxidized-0.29.1/lib/oxidized/model [rootoxidized model]# ll comware.rb -rw-r--…

mac本地安裝運行Redis-單機

記錄一下我以前用的連接服務器的跨平臺SSH客戶端。 因為還要準備畢設...... 服務器又過期了,只能把redis安裝下載到本地了。 目錄 1.github下載Redis 2.安裝homebrew 3.更新GCC 4.自行安裝Redis 5.通過 Homebrew 安裝 Redis 安裝地址:https://git…

C++學習之格斗小游戲綜合案例

C格斗游戲效果視頻 1.案例簡介 #include "broadSword.h" //構造函數 BroadSword::BroadSword() { FileManager fm; map<string, map<string, string>> mWeapon; fm.loadCSVData("Weapons.csv", mWeapon); //武器id string id …

《用Python+PyGame開發雙人生存游戲!源碼解析+完整開發思路分享》

導語? "你是否想過用Python開發一款可玩性高的雙人合作游戲&#xff1f;本文將分享如何從零開始實現一款類《吸血鬼幸存者》的生存射擊游戲&#xff01;包含完整源碼解析、角色系統設計、敵人AI邏輯等核心技術點&#xff0c;文末提供完整代碼包下載&#xff01;" 哈…