Python從入門到高手9.1節-Python中的字典類型

目錄

9.1.1 理解字典類型

9.1.2 字典的類型名

9.1.3 字典的定義

9.1.4 字典的主要性質

9.1.5?好好學習,天天向上


9.1.1 理解字典類型

在日常生活中,我們常常會接觸到“字典”這種數據類型,例如一本書籍的目錄結構,在目錄結構中,通過查找頁碼,就可以快速翻到指定的頁面。

如果沒有這樣的頁碼,那么我們必須從書籍的第一頁開始,一頁一頁地查找。有了頁碼以后,直接翻到指定的頁面。在Python中,可以通過字典來進行快速地查找。

Python中的字典類型是用{}符號括住的一個數據集合,集合中的元素以英文逗號進行分隔。

image.png

字典中的元素是一個鍵值對:

# 定義一個字典變量bookbook = {"第十二章-徹底掌握Python的字典類型": 210}

在上文代碼中定義了一個字典類型變量book, book中只有一個元素。元素以英文冒號進行分隔。在冒號左邊的為鍵名,冒號右邊的為鍵值。book中的鍵名表示書籍的章節目錄名稱,鍵值表示章節目錄的頁碼。字典中的鍵名是唯一的,就如同在一本書籍中,不會出現相同的目錄。

字典中的鍵名是唯一的,在列表和元組中可以保存多個相同的元素值。

9.1.2 字典的類型名

在交互模式中通過type來輸出字典的類型名:

>>> book = {"第十二章-徹底掌握Python的字典類型": 210}

>>> type(book)

<class 'dict'>

從輸出可知,字典的類型名為dict。

9.1.3 字典的定義

對字典進行定義,主要有對象定義法和直接定義法。

(1) 對象定義法

字典的類型名是dict,可以直接在交互模式中執行help(dict)來查找dict的定義及用法:

class dict(object)

| ?dict() -> new empty dictionary

| ?dict(mapping) -> new dictionary initialized from a mapping object's

| ? ? ?(key, value) pairs

| ?dict(iterable) -> new dictionary initialized as if via:

| ? ? ?d = {}

| ? ? ?for k, v in iterable:

| ? ? ? ? ?d[k] = v

| ?dict(**kwargs) -> new dictionary initialized with the name=value pairs

| ? ? ?in the keyword argument list. ?For example: ?dict(one=1, two=2)

從交互模式的輸出中,可看到如下四個定義字典的構造方法:

(1) dict()

(2) dict(mapping)

(3) dict(iterable)

(4) dict(**kwargs)

1.dict()

使用dict()構造一個空的字典。

代碼實例:

# __desc__ = 通過dict()構造一個空的字典 
# 定義一個空的字典
book = dict() # 空值在條件判斷中會自動轉換為布爾類型Falseif book:  print("book is not empty")
else:  print("book is empty")

2. dict(mapping)

使用mapping對象中的(key, value)鍵值對來構造一個有值的字典對象。mapping對象是一個從鍵名到鍵值的映射對象。在Python中可以通過zip類型構造一個mapping格式的對象,給zip構造方法傳遞兩個可迭代對象,例如:zip(iter1, iter2), 左邊的可迭代對象iter1表示的是鍵名,右邊的可迭代對象iter2表示的是鍵值,iter1中的鍵名與iter2中的鍵值一一對應。

代碼實例:

# __desc__ = 使用zip類型來定義一個mapping對象 
# zip接受兩個可迭代對象
# 元組是一種可迭代對象
# 迄今學過的可迭代對象有字符串,列表,元組mapping = zip(("第十二章-徹底掌握Python的字典類型",), (210,)) 
# 使用mapping對象來構造字典對象
book = dict(mapping)
# book的輸出為{"第十二章-徹底掌握Python的字典類型": 210}

Python中的字典類型就是一種標準的mapping對象,我們可以在dict方法中傳遞一個字典對象來構造字典。

代碼實例:

# __desc__ = 使用字典類型來構造一個mapping對象 
pair = {"第十二章-徹底掌握Python的字典類型": 210}
# 使用mapping對象來構造字典對象
book = dict(pair)
# book的輸出為{"第十二章-徹底掌握Python的字典類型": 210}

3. dict(iterable)

這里的iterable表示的是可迭代對象,可迭代對象存儲了每一個鍵值對,鍵值對以列表或元組的形式存儲于這個可迭代對象中。可迭代對象既可以是列表,也可以是元組。可迭代對象是列表的情況:

# 1.列表中保存的是列表
[[key, value],[key,value]] 
# 2.列表中保存的是元組
[(key, value),(key,value)]
可迭代對象是元組的情況:# 1.元組中保存的是列表:
([key, value],[key,value]) 
# 2.元組中保存的是元組:
((key, value),(key,value))

代碼實例:

# __desc__ = 通過可迭代對象來構造字典 
book = dict([["第十二章-徹底掌握Python的字典類型", 20]])
# book的輸出為{"第十二章-徹底掌握Python的字典類型": 210} book = dict((("第十二章-徹底掌握Python的字典類型", 20),))
# book的輸出為{"第十二章-徹底掌握Python的字典類型": 210}

4.dict(**kwargs)

這種構造方式是直接采用name=value的關鍵字參數形式來對字典進行構造,name表示的是鍵名,value表示的是鍵值,name必須符合變量名的規則, value必須是Python中的合法數據類型。

代碼實例:

# 在dict構造方法中,name=value即表示一個鍵值對
book = dict(name="108節課徹底學通Python")
# book的輸出為{"name": "108節課徹底學通Python"}

(2) 直接定義法

直接定義法是指直接通過字典的別名符號{}來進行定義。在{}中,鍵值對以英文逗號進行分隔。

代碼實例:

# __desc__ = 直接通過{}來構造字典 
# 構造一個空的字典
book = {} # 構造一個有值的字典
book = {"name": "108節課徹底學通Python", "price": 0}

9.1.4 字典的主要性質

字典跟列表一樣,都是可變的數據類型。同時字典也是一種可迭代類型,可在for循環中迭代字典的鍵名。迭代字典對象的for循環結構:

for name in dict:  pass

代碼實例:

# __desc__ = 在for循環中迭代字典的鍵名 
# 構造一個有值的字典
book = {"name": "108節課徹底學通Python", "author": "薯條老師"} 
for name in book:  # 執行dict[name]的語法,可以訪問字典的鍵值  print(name, book[name])

9.1.5?好好學習,天天向上

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

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

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

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

相關文章

封禁UDP端口提高防御能力分析

封禁不必要的 UDP 端口 確實可以在一定程度上提高系統的防御力&#xff0c;但這并不是一個絕對的“好”或“壞”的問題&#xff0c;需要根據具體情況來判斷。以下是詳細分析&#xff1a; ? 封禁 UDP 端口能提高防御力的原因 (優點) 減少攻擊面&#xff1a; 服務暴露&#xff…

阿里云-arms監控

監控java應用 若是容器集群環境&#xff0c;則選擇容器服務環境 手動安裝方式&#xff0c;是手動把 agent的jar包放到 ecs服務器&#xff0c;然后運行個人的spring boot服務時&#xff0c;加上一些參數&#xff0c;將agent也啟動運行 手動集成-添加agent 監控的是ecs中的java應…

c語言 char *str = ““ 和 char *str = NULL 以及 char str[] = {} 區別

目錄 前言char *str "" 和 char *str NULL 區別char *str NULL 和 char str[] {} 區別char *str "" 和 char str[] {} 區別char *str "" 和 const char *str "" 區別 前言 C語言指針的使用非常常見且易出錯&#xff0c;這里對…

小程序入門: tab bar 實現多頁面快速切換效果

在小程序開發中&#xff0c;tab bar 是實現多頁面快速切換的關鍵組件&#xff0c;能極大提升用戶體驗。上一篇我們完成了基礎配置&#xff0c;今天深入探索&#xff0c;打造更豐富實用的 tab bar 效果。 實現目標 這次要在小程序底部創建包含 “首頁”“消息”“聯系我們” 三…

Python 數據分析:numpy,抽提,多維切片索引

目錄 1 示例代碼2 歡迎糾錯3 免費爬蟲------以下關于 Markdown 編輯器新的改變功能快捷鍵合理的創建標題&#xff0c;有助于目錄的生成如何改變文本的樣式插入鏈接與圖片如何插入一段漂亮的代碼片生成一個適合你的列表創建一個表格設定內容居中、居左、居右SmartyPants 創建一個…

【向上教育】結構化面試概述.pdf

目 錄 第一章 面試須知—面試形式 .......................................................................................................... 1 一、結構化面試 .................................................................................................…

STM32F407控制單個張大頭閉環步進電機講解與梯形加減速(HAL庫)

文章目錄 硬件連接CubeMX配置**使用TIM5定時器CH3,即PA2作為脈沖控制&#xff0c;PE5控制方向&#xff08;TIM5_CH4是為控制雙電機做準備的可以先不配置&#xff09;** 設置占空比為50%,以下為AI講解重要&#xff01;&#xff01;&#xff01;定時器更新中斷脈沖觸發原理詳解PW…

MongoDB入門學習(含JAVA客戶端)

0.序章 致命的面試問題&#xff1a;為什么使用MongoDB&#xff1f; 大型的分布式的文檔型數據庫&#xff0c;也是NoSQL數據庫&#xff08;例如 redis&#xff09; MongoDB適合數據量大而價值又低的這種數據&#xff08;播放進度、評論、彈幕&#xff0c;實時數據的CRUD&…

RedisCache與StringRedisTemplate的深度對比

1. 基本概念 RedisCache ??定位??&#xff1a;自定義封裝的Redis緩存工具類??特點??&#xff1a;通常針對業務場景進行了高層抽象??典型功能??&#xff1a; 帶過期時間的緩存操作自定義序列化方式業務鍵前綴管理簡化常用操作API StringRedisTemplate ??定位…

HOOPS Visualize技術詳解(二):3D圖形系統HOOPS/3DGS的段結構與屬性機制

在工業級三維可視化領域中&#xff0c;HOOPS Visualize憑借其高性能和模塊化設計被廣泛應用于CAD、CAM、仿真、BIM等工程軟件中。其中&#xff0c;HOOPS 3D Graphics System&#xff08;簡稱HOOPS/3DGS&#xff09;是HOOPS Visualize的核心組件&#xff0c;承擔著圖形場景管理、…

隨機化在臨床試驗中的應用與挑戰

一、隨機化的核心目的 1.1 控制混雜偏倚 1.1.1 平衡預后因素 確保已知/未知預后因素在組間分布均衡,避免基線不平衡影響結果。 1.1.2 避免選擇偏倚 防止研究者或患者主觀選擇分組,保障組間差異歸因于干預。 1.2 保障統計推斷有效性 1.2.1 滿足獨立性假設 滿足統計檢驗…

在C++中#pragma“可選預處理指令的作用“。

文章目錄 1. 標準定位&#xff1a;2. 語法形式&#xff1a;3. 常見用途舉例4. 為什么用 #pragma&#xff1f;5. 宏里用 __pragma / _Pragma6. 常見誤區 在 C/C 里&#xff0c;#pragma 本質上是“可選預處理器指令”&#xff0c;用來告訴編譯器在編譯某段代碼時啟用或關閉某些特…

windows系統中docker數據遷移出系統盤

1、關閉docker 2、移動docker數據 找到docker數據目錄&#xff0c;一般在C:\Users\61050\AppData\Local\Docker文件&#xff0c;將整個docker目錄復制到其他盤&#xff08;例如 D:\Docker&#xff09;&#xff0c;為保證不出錯&#xff0c;可以先提前復制一份。 3、創建符號鏈…

win11電腦突然休眠問題排查

WinR, 輸入eventvwr.msc打開事件查看器。找到出現問題的時間點那條數據。會顯示原因。首先還是要先排查原因。再去猜測。我因為猜測就直接去了科技市場掃灰加硅來了一個遍。另外還買了散熱風扇和金屬支架。雖然不知道有沒有必要。但是別人是很原因。到頭來早上還是發現自動休眠…

安卓開發 lambda表達式

第一步&#xff1a;初學者代碼 (沒有 Lambda 的“舊”方法) 假設我們有一個簡單的需求&#xff1a;執行一個耗時的計算&#xff08;比如網絡請求&#xff09;&#xff0c;并在計算完成后&#xff0c;通過一個“回調”來通知我們結果。 1. 定義一個回調接口 這個接口只有一個…

JMeter中變量如何使用?

在性能測試的世界中&#xff0c;Apache JMeter是一把利器&#xff0c;憑借其強大的可擴展性與圖形化操作界面&#xff0c;在工業界和開源社區中廣受青睞。而“變量的使用”作為JMeter中提高測試靈活性、可維護性和復用性的關鍵技術點&#xff0c;卻常常被初學者忽略或誤用。本文…

印度和澳洲的地理因素

研究表明&#xff0c;氣溫每升高1℃&#xff0c;勞動生產率可能下降1.5%至3%&#xff0c;甚至更多。印度大部分地區夏季高溫且濕度較大&#xff0c;有地方60多度&#xff0c;嚴重限制了勞動效率和農業產出。若印度整體地理位置北移約300公里&#xff0c;平均氣溫將降低&#xf…

3D Gaussian Splatting

3D高斯濺射&#xff08;3D Gaussian Splatting &#xff09;是一種基于顯式三維高斯分布的場景表示與渲染方法。與傳統的三維重建技術&#xff08;如多邊形網格、點云或隱式神經輻射場NeRF&#xff09;不同&#xff0c;3DGS將場景表示為大量帶有屬性的3D高斯橢球的集合&#xf…

鴻蒙5:布局組件

注意&#xff1a;博主有個鴻蒙專欄&#xff0c;里面從上到下有關于鴻蒙next的教學文檔&#xff0c;大家感興趣可以學習下 如果大家覺得博主文章寫的好的話&#xff0c;可以點下關注&#xff0c;博主會一直更新鴻蒙next相關知識 專欄地址: https://blog.csdn.net/qq_56760790/…

Flink狀態和容錯-基礎篇

1. 概念 flink的狀態和容錯繞不開3個概念&#xff0c;state backends和checkpoint、savepoint。本文重心即搞清楚這3部分內容。 容錯機制是基于在狀態快照的一種恢復方式。但是狀態和容錯要分開來看。 什么是狀態&#xff0c;為什么需要狀態&#xff1f; 流計算和批計算在數…