Python序列的應用(八):元組、字典

前言:在Python編程語言中,序列是一種非常重要的數據結構,它允許我們存儲和操作有序的數據集合。在前幾期的內容中,我們已經探討了列表(List)和集合(Set)這兩種序列的應用,它們各自具有獨特的特性和用途。列表以其靈活性和可變性而聞名,而集合則以其無序性和唯一性而受到青睞。今天,我們將深入探討Python中的另外兩種序列類型:元組(Tuple)和字典(Dictionary)。

元組和字典都是Python中不可或缺的數據結構,它們在不同的場景下有著廣泛的應用。元組以其不可變性和高效性而受到青睞,尤其適合用于保護數據不被修改的情況。字典則以其鍵值對的結構和快速查找能力而聞名,是存儲和管理關聯數據的理想選擇。

在這篇文章中,我們將詳細介紹元組和字典的創建、操作和應用,包括:

  1. 元組的創建和刪除:如何創建元組,以及如何刪除整個元組或其元素。
  2. 訪問元組元素:如何通過索引訪問元組中的元素。
  3. 修改元組元素:為什么元組是不可變的,以及如何處理需要修改元組的場景。
  4. 元組推導式:如何使用元組推導式來創建元組。
  5. 字典的創建和刪除:如何創建字典,以及如何刪除整個字典或其元素。
  6. 通過鍵值對訪問字典:如何通過鍵來訪問字典中的值。
  7. 遍歷字典:如何遍歷字典的鍵、值或鍵值對。
  8. 添加、修改和刪除字典元素:如何對字典進行增刪改操作。
  9. 字典推導式:如何使用字典推導式來創建字典。

通過這篇文章,你將能夠更深入地理解元組和字典的工作原理,以及如何在實際編程中有效地使用它們。無論是處理固定不變的數據集,還是管理復雜的關聯數據,元組和字典都能提供強大的支持。讓我們開始今天的探索之旅吧!

一、元組

Python 中的元組(Tuple)是一種數據結構,用于存儲不同的值(可以是數字、字符串、對象等)。元組與列表(List)類似,但元組是不可變的,這意味著一旦元組被創建,你就不能添加、刪除或改變它的元素。元組的這種不可變性使得它們在某些情況下比列表更安全,因為它們不能被意外地修改。

以下是關于Python元組的一些基本特性和操作:

1、創建元組:

元組可以通過將一系列值用逗號分隔來創建,或者使用圓括號來明確表示這是一個元組。

# 使用逗號分隔
my_tuple = 1, 2, 3
print(my_tuple)  # 輸出:(1, 2, 3)# 使用圓括號
my_tuple = (1, 2, 3)
print(my_tuple)  # 輸出:(1, 2, 3)

2、元組的刪除

由于元組是不可變的,你不能刪除元組中的單個元素,但可以刪除整個元組或者清空整個元組。

my_tuple = (1, 2, 3)
del my_tuple  # 刪除整個元組
# my_tuple[0] = 4  # 嘗試修改元素會拋出TypeError# 清空元組
my_tuple = ()
print(my_tuple)  # 輸出:()

3、 訪問元組元素:

可以通過索引來訪問元組中的元素,索引從0開始。

my_tuple = (1, 2, 3)
print(my_tuple[0])  # 輸出:1

4、元組的不可變性:

由于元組是不可變的,你不能修改元組中的元素。嘗試修改將會導致錯誤。

my_tuple = (1, 2, 3)
# my_tuple[0] = 4  # 這會拋出TypeError

5、元組的切片:

可以對元組進行切片操作,但結果仍然是一個新的元組。

my_tuple = (1, 2, 3, 4, 5)
print(my_tuple[1:3])  # 輸出:(2, 3)

6、元組的連接:

可以使用加號(+)來連接兩個元組,但結果是一個新的元組。

tuple1 = (1, 2)
tuple2 = (3, 4)
print(tuple1 + tuple2)  # 輸出:(1, 2, 3, 4)

7、元組的解包:

可以同時賦值多個變量,這稱為元組的解包。

my_tuple = (1, 2, 3)
a, b, c = my_tuple
print(a, b, c)  # 輸出:1 2 3

8、元組的方法:

元組有一些內置的方法,如 count()index()
在Python中,count()index() 是列表(List)和元組(Tuple)等序列類型提供的內置方法,它們用于執行特定的操作:

① count() 方法:

  • count() 方法用于統計某個元素在序列中出現的次數,并返回這個計數。
  • 它接受一個參數,即你想要計數的元素。
  • 如果元素在序列中不存在,則返回0。
  • 示例:
    my_list = [1, 2, 2, 3, 2, 4]
    count_of_two = my_list.count(2)  # 返回元素2出現的次數
    print(count_of_two)  # 輸出:3
    

② index() 方法:

  • index() 方法用于從序列中找出某個元素第一次出現的索引位置,并返回這個索引。
  • 它接受一個參數,即你想要查找索引的元素。
  • 如果元素在序列中不存在,則拋出一個 ValueError 異常。
  • 可以有可選的參數,用于指定搜索的起始和結束位置。
  • 示例:
    my_list = [1, 2, 3, 2, 4]
    index_of_two = my_list.index(2)  # 返回元素2第一次出現的索引
    print(index_of_two)  # 輸出:1
    
    如果列表中有多個相同的元素,index() 只會返回第一個元素的索引。

這兩個方法在處理列表和元組時非常有用,尤其是在需要對元素進行計數或者查找元素位置時。

9、元組與列表的轉換:

元組可以被轉換成列表,反之亦然,因為列表是可變的。

my_tuple = (1, 2, 3)
my_list = list(my_tuple)  # 將元組轉換為列表
print(my_list)  # 輸出:[1, 2, 3]my_list = [1, 2, 3]
my_tuple = tuple(my_list)  # 將列表轉換為元組
print(my_tuple)  # 輸出:(1, 2, 3)

10、元組推導式

元組推導式類似于列表推導式,但是使用圓括號而不是方括號。

my_tuple = tuple(i * 2 for i in range(5))
print(my_tuple)  # 輸出:(0, 2, 4, 6, 8)### 11、元組和列表的區別
1. **可變性**- 列表是可變的,可以添加、刪除或更改元素。- 元組是不可變的,一旦創建就不能更改。2. **性能**- 由于元組的不可變性,它們通常比列表有更小的內存開銷,并且在某些情況下執行速度更快。3. **用途**- 列表通常用于存儲需要動態改變大小的數據集合。- 元組通常用于保護數據不被改變,并且可以作為字典的鍵,而列表則不能。4. **方法**- 列表有更多的方法,比如 `append()`, `extend()`, `remove()`, `pop()` 等,因為它們需要支持元素的添加和刪除。- 元組的方法較少,主要是 `count()` 和 `index()`。5. **語法**- 創建列表時使用方括號 `[]`。- 創建元組時使用圓括號 `()`,或者逗號分隔。元組在Python中非常有用,特別是在需要確保數據不被改變的情況下,比如作為字典的鍵或者函數的返回值。### 實例訓練20 -使用元組保存咖啡館里提供的咖啡名稱

coffeename = (‘藍山’,‘卡布奇諾’,‘摩卡’,‘曼特寧’,‘麝香貓’,‘哥倫比亞’) #定義元組
print(coffeename) #輸出元組

![](https://img2024.cnblogs.com/blog/3426651/202412/3426651-20241214100727709-642900042.png)### 實例訓練21 -使用for循環列出咖啡館里提供的咖啡名稱

coffeename = (‘藍山’,‘卡布奇諾’,‘摩卡’,‘曼特寧’,‘麝香貓’,‘哥倫比亞’) #定義元組
print(“您好,歡迎光臨 ~ 伊米咖啡館 ~\n\n我店有: \n”)
for name in coffeename: #遍歷元組
print(name + “咖啡”,end= " ")

![](https://img2024.cnblogs.com/blog/3426651/202412/3426651-20241214102535595-1822594802.png)### 實例訓練22 -分兩列顯示某賽季NBA西部聯盟前八名球隊

print(“某賽季NBA西部聯盟前八名\n”)
team = (“火箭”,“勇士”,“開拓者”,“雷霆”,“爵士”,“鵜鶘”,“馬刺”,“森林狼”)
for index,item in enumerate(team):
if index%2 == 0: #判斷是否為偶數,為偶數時不換行
print(item +“\t\t”,end=‘’)
else:
print(item + “\n”) #換行輸出

![](https://img2024.cnblogs.com/blog/3426651/202412/3426651-20241214110120012-846870189.png)
### 實例訓練23 -將麝香貓咖啡替換為拿鐵咖啡

coffeename = (‘藍山’,‘卡布奇諾’,‘摩卡’,‘曼特寧’,‘麝香貓’,‘哥倫比亞’) #定義元組
coffeename[4] = ‘拿鐵’ #將"麝香貓",替換為"拿鐵"
print(coffeename)

![](https://img2024.cnblogs.com/blog/3426651/202412/3426651-20241214110602778-1644122603.png)
### 注意:通過這個實驗就可以看出元組是無法直接修改的,需要修改得重新賦值,如:

coffeename = (‘藍山’,‘卡布奇諾’,‘摩卡’,‘曼特寧’,‘麝香貓’,‘哥倫比亞’) #定義元組
coffeename = (‘藍山’,‘卡布奇諾’,‘摩卡’,‘曼特寧’,‘拿鐵’,‘哥倫比亞’) #定義元組
print(coffeename)


### 二、字典
Python中的字典(Dictionary)是一種內置的數據結構,它存儲鍵值對(key-value pairs)。字典中的每個鍵都與一個值相關聯,且鍵必須是唯一的。以下是關于Python字典的一些基本操作:### 1、字典的創建和刪除### ① 創建字典:
- 字典可以通過花括號 `{}` 或者 `dict()` 函數來創建。
- 鍵值對用冒號 `:` 分隔,鍵值對之間用逗號分隔。```python
# 使用花括號創建
my_dict = {'name': 'Alice', 'age': 25}# 使用dict()函數創建
my_dict = dict(name='Alice', age=25)# 空字典
empty_dict = {}

② 刪除字典:

  • 可以使用 del 語句或者 clear() 方法來刪除整個字典。
  • 也可以使用 pop()popitem() 方法來刪除字典中的單個元素。
# 刪除整個字典
del my_dict# 清空字典
my_dict = {'a': 1, 'b': 2}
my_dict.clear()  # 清空字典后,my_dict 變為 {}# 刪除單個鍵值對
my_dict = {'a': 1, 'b': 2}
my_dict.pop('a')  # 刪除鍵 'a' 及其對應的值,返回值 1
my_dict.popitem()  # 刪除并返回一個鍵值對,字典變為 {}

實例訓練24 -創建一個保存女神星座的字典

name = ['綺夢','冷伊一','香凝','黛蘭']         #作為鍵的列表
sign = ['水瓶座','射手座','雙魚座','雙子座']    #作為值的列表
dictionary = dict(zip(name,sign))             #轉換為字典
print(dictionary)                             #輸出轉換后字典

2、通過鍵值對訪問字典

可以通過鍵來訪問字典中的值。

my_dict = {'name': 'Alice', 'age': 25}
print(my_dict['name'])  # 輸出:Alice

如果嘗試訪問不存在的鍵,會拋出 KeyError。為了避免這個錯誤,可以使用 get() 方法,它允許你設置一個默認值。

print(my_dict.get('name', 'Default Name'))  # 輸出:Alice
print(my_dict.get('gender', 'Default Gender'))  # 輸出:Default Gender

3、遍歷字典

可以遍歷字典的鍵、值或鍵值對。

my_dict = {'name': 'Alice', 'age': 25}# 遍歷鍵
for key in my_dict:print(key)# 遍歷值
for value in my_dict.values():print(value)# 遍歷鍵值對
for key, value in my_dict.items():print(key, value)

4、添加、修改和刪除字典元素

① 添加元素:

  • 直接賦值即可添加新的鍵值對。
dictionary = dict((('綺夢','水瓶座'),('冷伊一','射手座'),('香凝','雙魚座'),('黛蘭','雙子座')))
dictionary["碧綺"] = "巨蟹座"             #添加一個元素
print(dictionary)

② 修改元素:

  • 如果鍵已存在,賦值會更新其對應的值。
dictionary = dict((('綺夢','水瓶座'),('冷伊一','射手座'),('香凝','雙魚座'),('黛蘭','雙子座')))
dictionary["香凝"] = "天蝎座"             #添加一個元素,當元素存在時,則相當于修改功能
print(dictionary)

③ 刪除元素:

  • 使用 del 語句、pop()popitem() 方法刪除元素。
dictionary = dict((('綺夢','水瓶座'),('冷伊一','射手座'),('香凝','雙魚座'),('黛蘭','雙子座')))
del dictionary["香凝"]            #刪除一個元素
print(dictionary)

當刪除一個不存在的鍵時,會報錯異常:

dictionary = dict((('綺夢','水瓶座'),('冷伊一','射手座'),('香凝','雙魚座'),('黛蘭','雙子座')))
del dictionary["香凝2"]            #刪除一個元素
print(dictionary)


避免這個異常,可以做一下修改:

dictionary = dict((('綺夢','水瓶座'),('冷伊一','射手座'),('香凝','雙魚座'),('黛蘭','雙子座')))
if "香凝2" in dictionary:          #如果存在del dictionary["香凝2"]        #刪除一個元素
print(dictionary)

5、字典推導式

字典推導式提供了一種優雅的方式來創建字典。

# 創建一個平方數字典
squares = {x: x**2 for x in range(6)}
print(squares)  # 輸出:{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

字典推導式可以包含條件語句:

# 創建一個只包含偶數的平方數字典
even_squares = {x: x**2 for x in range(6) if x % 2 == 0}
print(even_squares)  # 輸出:{0: 0, 2: 4, 4: 16}

實例訓練25 -應用字典推導式實現根據名字和星座創建一個字典

name = ['綺夢','冷伊一','香凝','黛蘭']                        #作為鍵的列表
sign = ['水瓶','射手','雙魚','雙子']                          #作為值的列表
dictionary = {i:j+'座' for i,j in zip(name,sign)}            #使用列表推導式生成字典
print(dictionary)                                            #輸出轉換后字典

以上就是Python字典的基本操作,包括創建、刪除、訪問、遍歷、修改以及使用字典推導式。字典是Python中非常強大和靈活的數據結構,適用于各種場景。

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

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

相關文章

OpenCV 功能函數介紹

一, 二值化函數 功能: 用于對圖像進行二值化處理 參數: cv2.threshold(輸入你的圖像所對應的灰度圖, 閾值:是浮點還是整數取決予圖像的數據類型 最大值;高于閾值的像素值, 閾值類型:cv2.THR…

【Python】使用Selenium的find_element模塊獲取網頁上的大段文字和表格的方法(建議收藏!)

發現了一個使用Selenium的find_element模塊,快速獲取文字和表格的方法,很實在,以后爬網的時候,就不用beautifulSoup 和 pandas的read_html 混起來用了! 文字部分:實現網絡節點下,某個節點下的其…

APP滲透測試記錄(一、Android應用基本構造)

Android應用基本構造 雷電模擬機進入 adb shell# 如果不是root權限 su一下 su 1.了解APK文件 安卓應用的擴展名為.apk(Android Application Package),它是一個包含多個文件和文件夾的數據存檔文件。 1.1 apk文件解壓后的目錄結構 AndroidManifest.xml:包含應用的大部分…

【AI知識】有監督學習之回歸任務(附線性回歸代碼及可視化)

1. 回歸的基本概念 在機器學習的有監督學習中,回歸(Regression)是一種常見的任務,它的目標是通過觀察數據來建立一個模型,用一個或多個自變量來預測因變量的值。 回歸分析通常用于: a.預測,基于…

fastadmin批量壓縮下載遠程視頻文件

后端代碼 // 批量下載并壓縮 public function downloadAll(){$ids input(ids);$row $this->model->where(id, in, $ids)->field(id,title,video_url)->select();if (!$row) {$this->error(記錄不存在);}$arr [];$tempFiles []; // 用來存儲臨時下載的視頻文…

邊緣計算+人工智能:讓設備更聰明的秘密

引言:日常生活中的“智能”設備 你是否發現,身邊的設備正變得越來越“聰明”? 早上醒來時,智能音箱已經根據你的日程播放舒緩音樂;走進廚房,智能冰箱提醒你今天的食材庫存;而在城市道路上&…

JVM 雙親委派模型以及垃圾回收機制

目錄 1. JVM 內存區域劃分 2. JVM 中類加載的過程 1) 類加載的基本流程 2) 雙親委派模型 3. JVM 中垃圾回收機制 1) 找到垃圾 a) 引用計數 b) 可達性分析 2) 釋放垃圾 1. JVM 內存區域劃分 一個運行起來的 Java 進程,其實就是一個 JVM 虛擬機。 而進程是…

ansible自動化運維(四)jinjia2模板

Jinjia2模板 前面說到playbook組成的時候,有介紹到template模塊,而template模塊對模板文件進行渲染時,使用的就是jinja2模板引擎,jinja2本身就是基于python的模板引擎,所以下面先來了解一下jinjia2模板的一些用法 基…

通過k-means對相似度較高的語句進行分類

本文介紹了如何使用K-Means算法對相似度較高的語句進行分類,并附上java案例代碼 import java.util.ArrayList; import java.util.List; import java.util.Random;public class KMeansTextClustering {public static void main(String[] args) {// 初始化語句數據集…

Oracle 19c rac 補丁升級,從19.7 to19.22-集群

1. 補丁包概述 數據庫環境 角色 數據庫 IP地址 數據庫版本 主機名 數據庫名稱 源端 RAC 172.30.21.166/167 19.7 hfcwdb66/hfcwdb67 hfdb 將以下補丁包上傳到/soft下 上傳到兩個節點的soft目錄下:p6880880_190000_Linux-x86-64.zip (更新o…

Windows安裝Jira

下載 Download Jira Data Center | Atlassian https://product-downloads.atlassian.com/software/jira/downloads/atlassian-jira-software-10.3.0-x64.exe 以管理員身份安裝,否則彈出以下提醒 創建和配置MySQL數據庫:參照 Connecting Jira applicat…

uniapp - 微信小程序

一、background-image 大圖不顯示的問題 解決方法: 1、使用網絡地址;2、使用 base64 urlTobase64(filePath) {// #ifdef MP-WEIXINlet img ${filePath},imgBase64 wx.getFileSystemManager().readFileSync(img, "base64"),base64Url data:…

DETR: End-to-End Object Detection with Transformers論文學習

論文地址:https://arxiv.org/pdf/2005.12872 代碼地址:https://github.com/facebookresearch/detr 相關學習視頻:https://space.bilibili.com/94779326/lists?sid1531941 標題前言: DETR 是 Facebook 團隊于 2020 年提出的基于…

LeetCode 24反轉鏈表

單鏈表反轉:詳細解析與代碼實現 在數據結構的學習過程中,鏈表是一個非常重要且有趣的部分,而單鏈表的反轉操作更是常考的基礎知識點。今天就來和大家詳細講講如何實現單鏈表的反轉,并通過代碼示例來加深理解呀。 題目 給定單鏈…

Redis學習筆記之——學習計劃

Redis——Remote Dictionary Server,開源、基于內存、速度快、key-value... Redis做為一個高性能的鍵值存儲系統,廣泛應用于緩存、會話存儲、分布式鎖以及其他需要快速訪問的數據場景中。熟悉掌握redis,似乎已成為廣大碼農們必備的一項技能。…

網絡安全教學博客(二):常見網絡安全威脅剖析

在上一篇博客中,我們了解了網絡安全的基礎概念和重要性。今天,讓我們深入探討一下常見的網絡安全威脅,以便我們能夠更好地識別和防范它們。 惡意軟件(Malware) 病毒(Virus):病毒是一…

Vue3狀態管理:Pinia架構設計分析

Vue3狀態管理:Pinia架構設計分析 介紹 在Vue.js開發中,狀態管理是一個非常重要的部分。隨著Vue3的發布,Pinia作為一種新的狀態管理架構也相繼問世。本文將對Pinia架構進行深入分析,幫助讀者了解其設計原理、特點以及在實際項目中的應用。 架構…

【IDEA】啟動報錯

今天啟動IDEA報錯 報錯信息: Cannot connect to already running IDE instance. Exception: Process 5,444 is still running 打開任務管理器,關掉進程ID5444的任務

socket編程UDP-實現停等機制(接收確認、超時重傳)

在下面博客中,我介紹了利用UDP模擬TCP連接、按數據包發送文件的過程,并附上完整源碼。 socket編程UDP-文件傳輸&模擬TCP建立連接脫離連接(進階篇)_udp socket發送-CSDN博客 下面博客實現的是滑動窗口機制: sock…

uniapp小程序的錨點定位(將頁面滾動到目標位置)

小程序中,a頁面跳轉到b頁面,跳轉后滾動定位到b頁面的特定位置。 1.uni.pageScrollTo傳遞一個scrollTop參數可以滾動到特定位置。2.可以通過 uni.createSelectorQuery()等獲取定位元素的位置信息。3.uni.getSystemInfoSync()獲取設備的導航欄和狀態欄高度…