Python:核心知識點整理大全11-筆記

目錄

?編輯

6.2.4 修改字典中的值

?6.2.5 刪除鍵—值對

注意 刪除的鍵—值對永遠消失了。

?6.2.6 由類似對象組成的字典

6.3 遍歷字典

6.3.1 遍歷所有的鍵—值對

6.3.2 遍歷字典中的所有鍵

往期快速傳送門👆(在文章最后):


6.2.4 修改字典中的值

要修改字典中的值,可依次指定字典名、用方括號括起的鍵以及與該鍵相關聯的新值。例如, 假設隨著游戲的進行,需要將一個外星人從綠色改為黃色:

alien_0 = {'color': 'green'}
print("The alien is " + alien_0['color'] + ".")
alien_0['color'] = 'yellow'
print("The alien is now " + alien_0['color'] + ".")

我們首先定義了一個表示外星人alien_0的字典,其中只包含這個外星人的顏色。接下 來,我們將與鍵'color'相關聯的值改為'yellow'。輸出表明,這個外星人確實從綠色變成 了黃色:

The alien is green.
The alien is now yellow.

來看一個更有趣的例子:對一個能夠以不同速度移動的外星人的位置進行跟蹤。為此,我們 將存儲該外星人的當前速度,并據此確定該外星人將向右移動多遠:

alien_0 = {'x_position': 0, 'y_position': 25, 'speed': 'medium'}
print("Original x-position: " + str(alien_0['x_position']))
# 向右移動外星人
# 據外星人當前速度決定將其移動多遠
1 if alien_0['speed'] == 'slow':x_increment = 1
elif alien_0['speed'] == 'medium':x_increment = 2
else:# 這個外星人的速度一定很快x_increment = 3
# 新位置等于老位置加上增量
2 alien_0['x_position'] = alien_0['x_position'] + x_increment
print("New x-position: " + str(alien_0['x_position']))

我們首先定義了一個外星人,其中包含初始的x坐標和y坐標,還有速度'medium'。出于簡化 考慮,我們省略了顏色和點數,但即便包含這些鍵1 值對,這個示例的工作原理也不會有任何變 化。我們還打印了x_position的初始值,旨在讓用戶知道這個外星人向右移動了多遠。 在?處,使用了一個if-elif-else結構來確定外星人應向右移動多遠,并將這個值存儲在變 量x_increment中。如果外星人的速度為'slow',它將向右移動一個單位;如果速度為'medium', 將向右移動兩個單位;如果為'fast',將向右移動三個單位。確定移動量后,將其與x_position 的當前值相加(見2 ),再將結果關聯到字典中的鍵x_position。 由于這是一個速度中等的外星人,因此其位置將向右移動兩個單位:

Original x-position: 0
New x-position: 2 

這種技術很棒:通過修改外星人字典中的值,可改變外星人的行為。例如,要將這個速度中 等的外星人變成速度很快的外星人,可添加如下代碼行:

alien_0['speed'] = fast

這樣,再次運行這些代碼時,其中的if-elif-else結構將把一個更大的值賦給變量 x_increment。

?6.2.5 刪除鍵—值對

對于字典中不再需要的信息,可使用del語句將相應的鍵—值對徹底刪除。使用del語句時, 必須指定字典名和要刪除的鍵。 例如,下面的代碼從字典alien_0中刪除鍵'points'及其值:

alien_0 = {'color': 'green', 'points': 5}
print(alien_0)
1 del alien_0['points']
print(alien_0)

1 處的代碼行讓Python將鍵'points'從字典alien_0中刪除,同時刪除與這個鍵相關聯的值。 輸出表明,鍵'points'及其值5已從字典中刪除,但其他鍵—值對未受影響:

{'color': 'green', 'points': 5}
{'color': 'green'}

注意 刪除的鍵—值對永遠消失了。

?6.2.6 由類似對象組成的字典

在前面的示例中,字典存儲的是一個對象(游戲中的一個外星人)的多種信息,但你也可以 使用字典來存儲眾多對象的同一種信息。例如,假設你要調查很多人,詢問他們最喜歡的編程語 言,可使用一個字典來存儲這種簡單調查的結果,如下所示:

favorite_languages = {'jen': 'python','sarah': 'c','edward': 'ruby','phil': 'python',} 

正如你看到的,我們將一個較大的字典放在了多行中。其中每個鍵都是一個被調查者的名字, 而每個值都是被調查者喜歡的語言。確定需要使用多行來定義字典時,在輸入左花括號后按回車 鍵,再在下一行縮進四個空格,指定第一個鍵—值對,并在它后面加上一個逗號。此后你再次按 回車鍵時,文本編輯器將自動縮進后續鍵—值對,且縮進量與第一個鍵—值對相同。

定義好字典后,在最后一個鍵—值對的下一行添加一個右花括號,并縮進四個空格,使其與 字典中的鍵對齊。另外一種不錯的做法是在最后一個鍵—值對后面也加上逗號,為以后在下一行 添加鍵—值對做好準備。


注意 對于較長的列表和字典,大多數編輯器都有以類似方式設置其格式的功能。對于較長的 字典,還有其他一些可行的格式設置方式,因此在你的編輯器或其他源代碼中,你可能 會看到稍微不同的格式設置方式。


給定被調查者的名字,可使用這個字典輕松地獲悉他喜歡的語言:

favorite_languages.py

favorite_languages = {'jen': 'python','sarah': 'c','edward': 'ruby','phil': 'python',}
1 print("Sarah's favorite language is " +
2 favorite_languages['sarah'].title() +
3 ".")

為獲悉Sarah喜歡的語言,我們使用如下代碼:

favorite_languages['sarah']

在print語句中,我們使用了這種語法(見2);輸出指出了Sarah喜歡的語言:

Sarah's favorite language is C. 

這個示例還演示了如何將較長的print語句分成多行。單詞print比大多數字典名都短,因此 讓輸出的第一部分緊跟在左括號后面是合理的(見1)。請選擇在合適的地方拆分要打印的內容, 并在第一行末尾(見)加上一個拼接運算符(+)。按回車鍵進入print語句的后續各行,并使 用Tab鍵將它們對齊并縮進一級。指定要打印的所有內容后,在print語句的最后一行末尾加上右 括號(見3)。

6.3 遍歷字典


一個Python字典可能只包含幾個鍵—值對,也可能包含數百萬個鍵—值對。鑒于字典可能包含 大量的數據,Python支持對字典遍歷。字典可用于以各種方式存儲信息,因此有多種遍歷字典的 方式:可遍歷字典的所有鍵—值對、鍵或值。

6.3.1 遍歷所有的鍵—值對

探索各種遍歷方法前,先來看一個新字典,它用于存儲有關網站用戶的信息。下面的字典存 儲一名用戶的用戶名、名和姓:

user_0 = {'username': 'efermi','first': 'enrico','last': 'fermi',} 

利用本章前面介紹過的知識,可訪問user_0的任何一項信息,但如果要獲悉該用戶字典中的 所有信息,該怎么辦呢?可以使用一個for循環來遍歷這個字典:

user.py

user_0 = {'username': 'efermi','first': 'enrico','last': 'fermi',}
1 for key, value in user_0.items():
2 print("\nKey: " + key)
3 print("Value: " + value)

如1所示,要編寫用于遍歷字典的for循環,可聲明兩個變量,用于存儲鍵—值對中的鍵和值。 對于這兩個變量,可使用任何名稱。下面的代碼使用了簡單的變量名,這完全可行:

for k, v in user_0.items() 

for語句的第二部分包含字典名和方法items()(見1),它返回一個鍵—值對列表。接下來, for循環依次將每個鍵—值對存儲到指定的兩個變量中。在前面的示例中,我們使用這兩個變量來 打印每個鍵(見 2 )及其相關聯的值(見 3 )。第一條print語句中的"\n"確保在輸出每個鍵—值對 前都插入一個空行:

Key: last
Value: fermi
Key: first
Value: enrico
Key: username
Value: efermi

注意,即便遍歷字典時,鍵—值對的返回順序也與存儲順序不同。Python不關心鍵—值對的存 儲順序,而只跟蹤鍵和值之間的關聯關系。

在6.2.6節的示例favorite_languages.py中,字典存儲的是不同人的同一種信息;對于類似這 樣的字典,遍歷所有的鍵—值對很合適。如果遍歷字典favorite_languages,將得到其中每個人 的姓名和喜歡的編程語言。由于其中的鍵都是人名,而值都是語言,因此我們在循環中使用變量 name和language,而不是key和value,這讓人更容易明白循環的作用:

favorite_languages.py

favorite_languages = {'jen': 'python','sarah': 'c','edward': 'ruby','phil': 'python',}
1 for name, language in favorite_languages.items():
2 print(name.title() + "'s favorite language is " +language.title() + ".") 

1 處的代碼讓Python遍歷字典中的每個鍵—值對,并將鍵存儲在變量name中,而將值存儲在變 量language中。這些描述性名稱能夠讓人非常輕松地明白print語句(見2 )是做什么的。 僅使用幾行代碼,我們就將全部調查結果顯示出來了:

Jen's favorite language is Python.
Sarah's favorite language is C.
Phil's favorite language is Python.
Edward's favorite language is Ruby.

即便字典存儲的是上千乃至上百萬人的調查結果,這種循環也管用

6.3.2 遍歷字典中的所有鍵

在不需要使用字典中的值時,方法keys()很有用。下面來遍歷字典favorite_languages,并 將每個被調查者的名字都打印出來:

favorite_languages = {'jen': 'python','sarah': 'c','edward': 'ruby','phil': 'python',}
1 for name in favorite_languages.keys():print(name.title())

1 處的代碼行讓Python提取字典favorite_languages中的所有鍵,并依次將它們存儲到變量 name中。輸出列出了每個被調查者的名字:

Jen
Sarah
Phil
Edward

遍歷字典時,會默認遍歷所有的鍵,因此,如果將上述代碼中的for name in favorite_ languages.keys():替換為for name in favorite_languages:,輸出將不變。

如果顯式地使用方法keys()可讓代碼更容易理解,你可以選擇這樣做,但如果你愿意,也可 省略它。

在這種循環中,可使用當前鍵來訪問與之相關聯的值。下面來打印兩條消息,指出兩位朋友 喜歡的語言。我們像前面一樣遍歷字典中的名字,但在名字為指定朋友的名字時,打印一條消息, 指出其喜歡的語言:

favorite_languages = {'jen': 'python','sarah': 'c','edward': 'ruby','phil': 'python',}
1 friends = ['phil', 'sarah']
for name in favorite_languages.keys():print(name.title())
2 if name in friends:print(" Hi " + name.title() +", I see your favorite language is " +
3 favorite_languages[name].title() + "!")

在 1 處,我們創建了一個列表,其中包含我們要通過打印消息,指出其喜歡的語言的朋友。 在循環中,我們打印每個人的名字,并檢查當前的名字是否在列表friends中(見 2 )。如果在列 表中,就打印一句特殊的問候語,其中包含這位朋友喜歡的語言。為訪問喜歡的語言,我們使用 了字典名,并將變量name的當前值作為鍵(見 3 )。每個人的名字都會被打印,但只對朋友打印 特殊消息:

Edward
PhilHi Phil, I see your favorite language is Python!
SarahHi Sarah, I see your favorite language is C!
Jen 

你還可以使用keys()確定某個人是否接受了調查。下面的代碼確定Erin是否接受了調查:

favorite_languages = {'jen': 'python','sarah': 'c','edward': 'ruby','phil': 'python',}if 'erin' not in favorite_languages.keys():
print("Erin, please take our poll!")

方法keys()并非只能用于遍歷;實際上,它返回一個列表,其中包含字典中的所有鍵,因此 1? 處的代碼行只是核實'erin'是否包含在這個列表中。由于她并不包含在這個列表中,因此打印 一條消息,邀請她參加調查:

Erin, please take our poll!

Python:核心知識點整理大全1-筆記-CSDN博客

Python:核心知識點整理大全2-筆記-CSDN博客

Python:核心知識點整理大全3-筆記-CSDN博客

Python:核心知識點整理大全4-筆記-CSDN博客

Python:核心知識點整理大全5-筆記-CSDN博客

Python:核心知識點整理大全6-筆記-CSDN博客

Python:核心知識點整理大全7-筆記-CSDN博客

Python:核心知識點整理大全8-筆記-CSDN博客

Python:核心知識點整理大全9-筆記-CSDN博客

往期快速傳送門👆(在文章最后):


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

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

相關文章

風力發電對講 IP語音對講終端IP安防一鍵呼叫對講 醫院對講終端SV-6005網絡音頻終端

風力發電對講 IP語音對講終端IP安防一鍵呼叫對講 醫院對講終端SV-6005網絡音頻終端 目 錄 1、產品規格 2、接口使用 2.1、側面接口功能 2.2、背面接口功能 2.3、面板接口功能 3、功能使用 1、產品規格 輸入電源: 12V~24V的直流電源 網絡接口&am…

前端知識庫Html5和CSS3

1、常見的水平垂直居中實現方案 最簡單的方案是flex布局 .container{display: flex;align-items: center;justify-content: center; }絕對定位配合margin:auto(一定要給.son寬高) .father {position: relative;height: 300px; } .son {position: absolute;top: 0;right: 0;b…

PID控制參數整定(調節方法)原理+圖示+MATLAB調試

PID控制參數整定(調節方法)原理圖示MATLAB調試 Chapter1 PID控制參數整定(調節方法)原理圖示MATLAB調試序一、P參數選取二、I的調節三、D的調節四、總結 Chapter2 PID參數調整,個人經驗(配輸出曲線圖&#…

【51單片機系列】獨立按鍵介紹

本文是關于獨立按鍵的介紹及使用。首先介紹了按鍵,包括什么是按鍵及使用按鍵時如何實現軟件消抖。然后使用proteus仿真實現獨立按鍵控制LED指示燈的操作。 之前的LED、蜂鳴器、數碼管中IO口都是作為輸出使用,這里通過獨立按鍵實驗介紹IO口作為輸入的使用…

Edge 中的msedgewebview2總想聯網

目錄預覽 一、問題描述二、原因分析三、解決方案四、參考鏈接 一、問題描述 使用Edge瀏覽器的時候,右下角火絨總會彈出“msedgewebview2”想要聯網的彈窗,如下 點擊發起程序,找到路徑如下: C:\Program Files (x86)\Microsoft\…

zabbix 進階

zabbix的字段發現機制: zabbix客戶端主動和服務端聯系,將自己的地址和端口發送服務端實現字段添加監控主機。 客戶端是主動一方。 缺點:自定義網段中主機數量太多,登記耗時會很久,而且這個自動發現機制不是很穩定。…

centos6.8下載地址

Index of /centos-store/6.8/isos/x86_64/ (liu.se) archive.kernel.org : http - rsynclinuxsoft.cern.ch : http - rsyncmirror.nsc.liu : http - rsync

被遺忘的書籍

C-被遺忘的書籍_牛客小白月賽82 (nowcoder.com) #include <iostream> #include <queue> #include <string> #include <stack> #include <vector> #include <set> #include <map> #include <unordered_map> #include <unor…

計組中各種透明性總結

虛擬存儲器&#xff0c;對應用程序員不可見。主存- cache層由硬件自動完成&#xff0c;對程序員不可見。cache純硬件&#xff0c;程序員不可見。內存&#xff0c;對程序員可見。知識點來源&#xff1a;王道模擬第六套主存-輔存層由硬件和操作系統共同完成&#xff0c;對應用程序…

【Docker一】Docker架構、鏡像操作和容器操作

一、docker基本管理和概念 1、概念 docker&#xff1a;開源的應用容器引擎。基于go語言開發的。運行在Linux系統中的開源的輕量級的“虛擬機” docker的容器技術可用在一臺主機上輕松到達為任何應用創建一個輕量級到的&#xff0c;可移植的&#xff0c;自給自足的容器 dock…

免費的數據采集軟件,最新免費的幾款數據采集軟件【2024】

在當今數字化時代&#xff0c;數據是企業決策和業務發展的關鍵。而如何高效獲取數據成為許多企業和研究機構的關注焦點。本文將深入探討數據采集軟件的種類。幫助大家選擇最適合自己需求的數據采集工具。 數據采集軟件種類 在眾多數據采集軟件中&#xff0c;有一類強大而多樣…

postgresql自帶指令命令系列二

簡介 在安裝postgresql數據庫的時候會需要設置一個關于postgresql數據庫的PATH變量 export PATH/home/postgres/pg/bin:$PATH&#xff0c;該變量會指向postgresql安裝路徑下的bin目錄。這個安裝目錄和我們在進行編譯的時候./configure --prefix [指定安裝目錄] 中的prefix參…

跨境電商運營常用的ChatGPT通用提示詞模板

市場分析&#xff1a;如何分析目標市場&#xff1f; 選品策略&#xff1a;如何選擇要銷售的商品&#xff1f; 供應鏈管理&#xff1a;如何管理供應鏈&#xff1f; 物流解決方案&#xff1a;如何選擇合適的物流解決方案&#xff1f; 跨國支付&#xff1a;如何處理跨國支付&a…

labelimg遇到的標簽修改問題:修改一張圖像的標簽時,保存后導致classes.txt改變

問題描述&#xff1a;修改一張圖像的標簽時候&#xff0c; classes.txt 會同步更新&#xff0c;導致重新生成了 classes.txt 但是這個 classes.txt 只有你現在寫的那個類別名&#xff0c;以前的沒有了。 解決&#xff1a;設置一個 predefined_classes.txt&#xff0c;內容和模…

Metasploit滲透測試的漏洞利用和攻擊方法

預計更新 第一章 Metasploit的使用和配置 1.1 安裝和配置Metasploit 1.2 Metasploit的基礎命令和選項 1.3 高級選項和配置 第二章 滲透測試的漏洞利用和攻擊方法 1.1 滲透測試中常見的漏洞類型和利用方法 1.2 Metasploit的漏洞利用模塊和選項 1.3 模塊編寫和自定義 第三章 Me…

基于ssm理發店會員管理系統的設計和實現論文

摘 要 網絡技術和計算機技術發展至今&#xff0c;已經擁有了深厚的理論基礎&#xff0c;并在現實中進行了充分運用&#xff0c;尤其是基于計算機運行的軟件更是受到各界的關注。加上現在人們已經步入信息時代&#xff0c;所以對于信息的宣傳和管理就很關鍵。因此理發店會員信息…

Cache的基本概念和原理

目錄 一. Cache的工作原理二. 局部性原理三. 性能分析四. 待解決的問題 \quad 一. Cache的工作原理 \quad 存儲系統存在的問題 雖然雙端口RAM、多模塊存儲器提高存儲器的工作速度, 但是優化后的速度與CPU差距依然很大, 為了改善這個問題就出現了Cache, 來解決存儲器與CPU速度不…

創作活動(五十一)———編程中常見的技術難題有哪些?

#編程中常見的技術難題有哪些&#xff1f;# 編程世界里的三大謎題&#xff1a;bug、性能優化與跨平臺兼容性 每個職業都有其固有的挑戰和困難&#xff0c;對于程序員來說&#xff0c;這些困難往往來自于技術本身。編程&#xff0c;就像是一個充滿謎題的世界&#xff0c;而程序…

大屏適配方案二——vw和vh

按照設計稿的尺寸&#xff0c;將px按比例計算轉為vw和vh&#xff0c;轉換公式如下 假設設計稿尺寸為 1920*1080&#xff08;做之前一定問清楚 ui 設計稿的尺寸&#xff09;即&#xff1a; 網頁寬度1920px 網頁高度1080px我們都知道 網頁寬度100vw 網頁寬度100vh所以&#xff0…

ubuntu安裝docker及docker常用命令

docker里有三個部分 daemon 鏡像 和 容器 我們需要了解的概念 容器 鏡像 數據卷 文章目錄 docker命令docker鏡像相關命令docker容器相關命令數據卷ubuntu安裝docker docker命令 #啟動&#xff0c;停止&#xff0c;重啟docker systemctl start docker systemctl stop docker s…