Python從入門到高手9.2節-Python字典的操作方法

目錄

9.2.1 字典的操作

9.2.2 字典的查找

9.2.3 字典的修改

9.2.4 字典的添加

9.2.5 字典的刪除

9.2.6?今天你逛街了嗎


9.2.1 字典的操作

字典類型是一種抽象數據類型,抽象數據類型定義了數據類型的操作方法,在本節的內容中,教同學們徹底掌握字典類型的常用操作方法。

image.png

字典的常用操作方法,主要有分為四類:字典的查找,字典的修改,字典的添加,字典的刪除。

9.2.2 字典的查找

(1) 查找鍵名是否存在

查找方法:

1. key in dict ?

2. key not in dict

key表示字典的鍵名,如果鍵名存在,則返回True,否則返回False。not in 表示是否不存在的意思。

代碼實例:

#?__desc__?=?通過in操作符,查找鍵是否存在?#?定義一個字典對象
book?=?{"name":?"108節課徹底學通Python",?"author":?"薯條老師"}?
#?查找book中是否存在price的鍵名,如果存在則返回True
if?"price"?in?book:??print("there?is?a?key?named?price?in?book")?#?通過not?in?來查找鍵是否不存在,如果不存在則返回True
if?"price"?not?in?book:??print("there?is?no?key?named?price?in?book")

(2) 查找鍵所對應的鍵值

查找方法:

1. dict[key]

key表示字典的鍵名,如果鍵名存在,會返回鍵值,如果鍵名不存在,則拋出異常。

2. dict.get(key, default=None)

key表示字典的鍵名,如果鍵名存在,會返回鍵值,如果鍵名不存在,則返回參數default指定的值。

操作符[]在列表和元組中用來進行索引訪問和切片,在字典中,用來進行鍵值訪問,修改鍵值,添加鍵值對。

代碼實例:

#?__desc__?=?通過[]操作符來獲取鍵值?
#?定義一個字典對象
book?=?{"name":?"108節課徹底學通Python",?"author":?"薯條老師"}?#?直接通過[]操作符獲取鍵值
price?=?book["price"]
#?在執行上文代碼時拋出異常,因為鍵名"price"并不存在?
#?可以先通過in操作來查找鍵名是否存在,來避免拋出異常
if?"price"?in?book:??#?如果存在鍵名"price",則通過[]操作符獲取鍵值??price?=?book["price"]

字典類型的get方法會先自動判斷鍵名是否存在,避免了鍵名不存在時的錯誤異常。

代碼實例:

#?__desc__?=?通過字典類型的get方法來獲取鍵值?
#?定義一個字典對象
book?=?{"name":?"108節課徹底學通Python",?"author":?"薯條老師"}?
#?執行get方法時,指定default參數的值為0
#?如果鍵名不存在,那么會返回在default參數中指定的值
price?=?book.get("price",?0)?
#?price的輸出為0

(1) 查找字典的所有鍵名

操作語法:

dict.keys()

字典類型的keys方法返回的是一個dict_keys類型,dict_keys是一個可迭代對象,我們可以在for循環中進行遍歷。

代碼實例:

#?__desc__?=?通過字典類型的keys方法來獲取所有鍵名?
#?定義一個字典對象
book?=?{"name":?"108節課徹底學通Python",?"author":?"薯條老師"}?
#?在for循環中遍歷字典的鍵值
for?name?in?book.keys():??#?name是一個變量,Python會自動將鍵名賦值給變量name??print(book[name])?"""程序的輸出為:
"108節課徹底學通Python"
"薯條老師"
"""

可將dict_keys類型通過顯示類型轉換,轉換為列表或元組類型。例如list(dict_keys)或者tuple(dict_keys)。同學們在進行學習的時候,要多進行發散性思考。

(2)?查找字典中的所有鍵值

操作語法:

dict.values()

字典類型的values方法返回的是一個dict_values類型,dict_values是一個可迭代對象,同樣可以在for循環中進行遍歷。

代碼實例:

#?__desc__?=?通過字典類型的values方法來獲取所有鍵值?
#?定義一個字典對象?
book=?{"name":?"108節課徹底學通Python",?"author":?"薯條老師"}?#?在for循環中遍歷字典的鍵值
for?value?in?book.values():??#?value是一個變量,Python會自動將鍵值賦值給變量value??print(value)?"""程序的輸出為:
"108節課徹底學通Python"
"薯條老師"
"""

(5) 查找字典的所有鍵值對

在字典類型的keys與values方法中,只能單獨地獲取鍵名或鍵值。想必同學們會有這樣的疑問,可不可以一次性獲取鍵名和鍵值?

通過字典類型的items方法,可以返回字典中的鍵值對。字典類型的items方法返回的是一個dict_items類型。dict_items是一個可迭代對象,現在編寫一段代碼,在for循環中同時獲取鍵名和鍵值。

代碼實例:

#?__desc__?=?通過字典類型的items方法來獲取鍵值對?
#?定義一個字典對象
book?=?{"name":?"108節課徹底學通Python",?"author":?"薯條老師"}?#?同學們須注意遍歷鍵名與鍵值的語法
for?name,?value?in?book.items():??print(name,?"-->",?value)??"""程序的輸出為:
name-->108節課徹底學通Python
author-->薯條老師
"""

9.2.3 字典的修改

Python中字典的鍵是只讀的,修改的是鍵名對應的鍵值。

(1)?修改字典的鍵值

操作語法:

dict[key]?=?value

key表示鍵名,value表示鍵值。鍵名不存在時,會插入新的鍵值對。

9.2.4 字典的添加

(1) 操作符:[]

操作語法:

dict[new_key]?=?value

new_key表示新的鍵名,value表示鍵值。

代碼實例:

#?__desc__?=?通過操作符[]來添加新的鍵值對?
#?定義一個空的字典對象
book?=?{}?
book["author"]?=?"薯條老師"
#?book的輸出為{'author':?'薯條老師'}

(2) dict.setdefault(key, default=None)

參數key表示鍵名,如果鍵存在,會返回鍵所對應的鍵值,否則添加一個新的鍵值對。通過參數default來指定新鍵的鍵值,返回值為鍵名所對應的鍵值,如果未指定鍵值,則返回值為None。

代碼實例:

#?__desc__?=?通過setdefault方法來添加新的鍵值對?
#?定義一個空的字典對象
book?=?{}?
#?未通過default參數指定鍵值
returned_value?=?book.setdefault("author")
#?returned_value的值為None
#?book的輸出為{'author':?None}?#?通過default參數指定鍵值
returned_value?=?book.setdefault("price",?66)
#?returned_value的值為66
#?book的輸出為{'author':?None,?'price':?66}

(3) dict.update(iterable)

iterable表示可迭代對象,傳遞的參數主要為字典類型,列表類型,元組類型,無返回值。通過字典對象來更新字典時,如果鍵名存在,則字典對象中鍵名的鍵值被更新為新的鍵值,如果鍵名不存在,添加新的鍵值對。通過列表,元組來更新字典時,列表/元組是二維的結構,具體可看代碼實例。

代碼實例:

#?__desc__?=?通過setdefault方法來添加新的鍵值對?
#?定義一個空的字典對象book?=?{}?
#?通過字典來更新字典
book.update({"name":?"108節課徹底學通Python",?"author":?"薯條橙子"})?
"""?book的輸出為:
{"name":?"108節課徹底學通Python",?"author":?"薯條橙子"}
"""?#?通過列表或元組來更新字典時,列表與元組是一個二維的結構
#?Python會將元組中的第一個元素作為鍵名,第二個元素作為鍵值
#?元組中只存在一個數據項時,不要遺漏逗號
book.update((("price",?69),))?
"""?book的輸出為:
{"name":?"108節課徹底學通Python",?"author":?"薯條橙子",?"price":?69}
"""

9.2.5 字典的刪除

(1) dict.pop(key)

pop方法用來刪除指定的鍵,待刪除的鍵必須存在于字典對象中,否則會拋出鍵名不存在的錯誤異常,返回值為鍵名對應的鍵值。

代碼實例:

#?__desc__?=?通過pop方法來刪除鍵?
book?=?{"name":?"108節課徹底學通Python",?"author":?"薯條老師"}?
#?刪除鍵時,可以先通過in操作符來判斷鍵名是否存在?
if?"price"?in?book:??#?如果存在price鍵,就執行pop方法來刪除??#?返回值為鍵名所對應的鍵值??price?=?book.pop("price")

(2) dict.popitem()

popitem方法用來刪除字典中的鍵值對,默認刪除字典末尾的鍵值對。方法的返回值為一個元組,元組的第一個元素為鍵名,第二個元素為鍵值。

代碼實例:

#?__desc__?=?通過popitem方法來刪除鍵值對?
book?=?{"name":?"108節課徹底學通Python",?"author":?"薯條老師"}?
#?popitem方法的返回值為元組類型
item?=?book.popitem()?#?元組的第一個元素為鍵名,第二個元素為鍵值
#?可通過索引來進行訪問,?索引編號為0的是鍵名,編號為1的是鍵值
name?=?item[0]
value?=?item[1]#?也可以利用元組的自動解包來賦值
name,?value?=?item

(3)?dict.clear()

通過字典類型的clear方法來一鍵刪除字典中的所有鍵,無返回值

代碼實例:

#?__desc__?=?通過clear方法來清空字典?
book?=?{"name":?"108節課徹底學通Python",?"author":?"薯條老師"}?
#?執行clear方法來清空字典book.clear()
#?執行clear方法后,book的輸出為{}

9.2.6?今天你逛街了嗎

跟薯條老師學高級爬蟲(JS逆向+安卓逆向),數據分析,數據科學,金融量化交易,以及機器學習+深度學習+大模型算法。堅持下去,你一定會成為高手。

薯條老師的學生在南方電網,林氏家居,京東,阿里等大廠。薯條老師的個人技術博客:Python神仙級入門教程-零基礎學習數據分析,高級爬蟲,機器學習+大模型算法。對本節教程有任何不懂的同學,亦可在評論區中進行評論。

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

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

相關文章

omniparser v2 本地部署及制作docker鏡像(20250715)

關于 omniparser v2 本地部署,網上資料不算多,尤其是對于土薔內用戶,還是有些坑的。 1、安裝步驟 可參考兩個CSDN博客: (1)大模型實戰 - ‘OmniParser-V2本地部署安裝 鏈接 (2)…

自己寫個 `rsync` + `fswatch` 實時增量同步腳本,干掉 Cursor AI、Sublime Text 的SFTP等 插件!

自己寫個 rsync fswatch 實時增量同步腳本,干掉 Cursor AI、Sublime Text 的 SFTP等 插件! 作為一個碼農,我最頭疼的事情之一就是編輯器同步代碼到服務器這塊。用過各種各樣的sftp、rsync插件,感覺不好用。。 我琢磨著&#xff1…

linux中at命令的常用用法。

Linux 中 at 命令用于安排一次性定時任務,需要用到在某個時間只需要執行一次的命令的時候,可以使用at 1:安裝at # Debian/Ubuntu sudo apt install at# CentOS/RHEL sudo yum install at2:啟動at sudo systemctl start atd # 啟…

【安卓筆記】RxJava的使用+修改功能+搭配retrofit+RxView防快速點擊

0. 環境: 電腦:Windows10 Android Studio: 2024.3.2 編程語言: Java Gradle version:8.11.1 Compile Sdk Version:35 Java 版本:Java11 1. 介紹RxJava GitHub開源地址:https://github.com/Reactive…

Windows 下原生使用 claude code + Kimi K2

搞定了kimi k2 claude code在windows下原生使用 Windows下使用claude code的障礙是shell環境(命令行),非posix風格shell無法正常讓claude code讀取到url和key, 導致無法使用。解決問題的本質是使用符合posix風格的shell環境,我們…

Leetcode Easy題小解(C++語言描述)1

Leetcode Easy題小解(C語言描述) 相交鏈表 給你兩個單鏈表的頭節點 headA 和 headB ,請你找出并返回兩個單鏈表相交的起始節點。如果兩個鏈表不存在相交節點,返回 null 。 圖示兩個鏈表在節點 c1 開始相交**:**題目數據…

EP01:【NLP 第二彈】自然語言處理概述

一、NLP通向智能之路 1.1 圖靈測試 1.1.1 提出背景 由計算機科學家阿蘭?圖靈于 1950 年提出,是早期衡量機器智能水平的重要概念。 1.1.2 提出目的 判斷機器是否能表現出與人類相當的智能行為。 1.1.3 測試原理 場景設定:測試中存在一位人類測試者&#…

Ansible 查看PostgreSQL的版本

Ansible的基礎知識就不說了直接貼劇本- name: Check PostgreSQL versionhosts: db_serversbecome: yesvars:ansible_python_interpreter: /usr/bin/python3db_name: postgresdb_user: postgresdb_password: your_passwordtasks:- name: Install psycopg2ansible.builtin.packag…

【視覺SLAM筆記】第9章 后端1

一、理論1. 狀態估計的概率解釋我們來深入探討一下視覺SLAM中狀態估計的概率解釋。這可以說是理解現代SLAM算法(尤其是后端優化)的基石1. 問題的核心:不確定性SLAM(同步定位與建圖)的本質是在一個未知環境中&#xff0…

(數據結構)復雜度

基本概念說明 數據結構 定義:數據結構(Data Structure)是計算機存儲、組織數據的方式,指相互之間存在?種或多種特定關系的數據元素的集合。沒有?種單?的數據結構對所有用途都有用(要考慮適配、效率問題,在不同情況下使用合適的…

玩轉Docker | 使用Docker部署bender個人導航頁工具

玩轉Docker | 使用Docker部署bender個人導航頁工具 前言 一、bender介紹 Bender 簡介 Bender 的主要特點 二、系統要求 環境要求 環境檢查 Docker版本檢查 檢查操作系統版本 三、部署bender服務 下載bender鏡像 編輯部署文件 創建容器 檢查容器狀態 檢查服務端口 安全設置 四、…

解決了困擾我的upload靶場無法解析phtml等后綴的問題

本文章為解決困擾我的 upload 靶場無法解析 phtml 問題 ? 這個問題直接讓我過不了Upload-Pass-03這一關,一直卡著。 ? 痛太痛了 ,為什么無法解析上傳之后的 phtml 后綴文件!這塊兒折磨了博主一天多,太不容易了,查找…

Leetcode百題斬-二分搜索

二分搜索也是一個很有趣的專題,被做過的題中,剛好一個Easy,一個Medium和一個Hard,剛好可以看看,二分搜索的三個難度等級都是啥樣的。 124. Binary Tree Maximum Path Sum[Hard](詳見二叉樹專題)…

【IDEA】格式化代碼工具配置

格式化代碼快捷鍵: CtrlAltL格式代碼的時候不會再方法名與參數中間添加空格默認不勾選的情況下:代碼樣例:勾選之后的樣例:選擇不勾選,IDEA默認情況下就是不勾選的狀態忽略加載文件有些非必要加載到開發工具中的文件我們…

驅動開發(3)|rk356x驅動GPIO基礎應用之點亮led燈

點亮LED燈看似是一個基礎的操作,但實際上,許多高級應用也依賴于高低電平的切換。例如,脈沖寬度調制(PWM)信號可以用來精確控制電機的轉速,通過改變脈沖的頻率和占空比,實現對電機的精確調節&…

手動搭建PHP環境:步步為營,解鎖Web開發

目錄一、引言二、準備工作2.1 明確所需軟件2.2 下載軟件三、Windows 系統搭建步驟3.1 安裝 Apache 服務器3.2 安裝 PHP3.3 集成 Apache 與 PHP3.4 安裝 MySQL3.5 配置 PHP 連接 MySQL四、Linux 系統搭建步驟(以 Ubuntu 為例)4.1 更新系統4.2 安裝 Apache…

DrissionPage:一款讓網頁自動化更簡單的 Python 庫

在網頁自動化領域,Selenium 和 Playwright 早已是開發者耳熟能詳的工具。但今天要給大家介紹一款更輕量、更易用的 Python 庫 ——DrissionPage。它以 "融合 selenium 和 requests 優勢" 為核心設計理念,既能像 requests 一樣高效處理靜態網頁…

理解Grafana中`X-Scope-OrgID`的作用與配置

X-Scope-OrgID的作用 該HTTP Header用于標識Loki日志數據的所屬租戶(組織)。在多租戶模式下,Loki通過此Header隔離不同團隊或用戶的數據,確保查詢和存儲的獨立性。數據隔離: 租戶A的日志標記為X-Scope-OrgID: team-a&a…

【PycharmPyqt designer桌面程序設計】

在 main.py 中調用 Qt Designer 生成的 windows.py(假設它是 PySide2 版)。 只要把兩個文件放在同一目錄即可直接運行。 ──────────────────── 1?? windows.py(Qt Designer 生成,已轉碼) # -*-…

Unity Android Logcat插件 輸出日志中文亂碼解決

背景之前安卓真機調試看日志,一直用的是Android Studio自帶的adb命令進行看日志,不太方便,改用Unity自帶的安卓日志插件時,存在中文日志亂碼問題。插件安裝基于Unity6000.1.11版本:Window -> Package Management -&…