Python入門教程 | Python3 字典(dict)

Python3 字典

字典是另一種可變容器模型,且可存儲任意類型對象。
Python3中的字典是一種無序、可變、可迭代的數據結構,它由鍵(key)和對應的值(value)組成。字典在Python中被視為可變對象,這意味著我們可以隨時更改、添加或刪除字典中的元素。

以下是一些關于Python3字典的基本特性:

  • 鍵和值:字典中的每個元素都由一個鍵和一個值組成。鍵是唯一的,每個鍵只能對應一個值。鍵和值之間用冒號分隔,而鍵值對之間用逗號分隔。
  • 無序:字典是無序的,這意味著當你創建一個字典時,元素的順序可能會隨著時間的推移而改變。在Python3.7及以后的版本中,字典是按照插入順序進行排序的,但這不是一個保證。
  • 可變性:Python字典是可變的,這意味著你可以在已有的字典中添加、刪除或更改元素。
  • 遍歷:可以通過循環遍歷字典中的所有鍵和值。
  • 內置函數和方法:Python字典有許多內置的函數和方法,如get(), keys(), values(), items()等,這些可以幫助你更好地操作和使用字典。

字典的每個鍵值 key=>value 對用冒號 : 分割,每個對之間用逗號(,)分割,整個字典包括在花括號 {} 中 ,格式如下所示:

d = {key1 : value1, key2 : value2, key3 : value3 }

注意dict 作為 Python 的關鍵字和內置函數,變量名不建議命名為 dict

在這里插入圖片描述

  • 鍵必須是唯一的,但值則不必。

  • 值可以取任何數據類型,但鍵必須是不可變的,如字符串,數字。

一個簡單的字典實例:

tinydict = {'name': 'tarzan', 'likes': 666, 'url': 'www.tarzan.com'}

也可如此創建字典:

tinydict1 = { 'abc': 456 }
tinydict2 = { 'abc': 123, 98.6: 37 }

創建空字典

使用大括號 { } 創建空字典:

實例:

# 使用大括號 {} 來創建空字典
emptyDict = {}# 打印字典
print(emptyDict)# 查看字典的數量
print("Length:", len(emptyDict))# 查看類型
print(type(emptyDict))

以上實例輸出結果:

{}
Length: 0
<class ‘dict’>

使用內建函數 dict() 創建字典:

實例

emptyDict = dict()
# 打印字典
print(emptyDict)
# 查看字典的數量
print("Length:",len(emptyDict))
# 查看類型
print(type(emptyDict))

以上實例輸出結果:

{}
Length: 0
<class ‘dict’>

訪問字典里的值

把相應的鍵放入到方括號中,如下實例:

#!/usr/bin/python3tinydict = {'Name': 'Tarzan', 'Age': 7, 'Class': 'First'}print ("tinydict['Name']: ", tinydict['Name'])
print ("tinydict['Age']: ", tinydict['Age'])

實例
以上實例輸出結果:

tinydict[‘Name’]: Tarzan
tinydict[‘Age’]: 7

如果用字典里沒有的鍵訪問數據,會輸出錯誤如下:

#!/usr/bin/python3tinydict = {'Name': 'Tarzan', 'Age': 7, 'Class': 'First'}print ("tinydict['Alice']: ", tinydict['Alice'])

以上實例輸出結果:

Traceback (most recent call last):File "test.py", line 5, in <module>print ("tinydict['Alice']: ", tinydict['Alice'])
KeyError: 'Alice'

修改字典

向字典添加新內容的方法是增加新的鍵/值對,修改或刪除已有鍵/值對如下實例:

#!/usr/bin/python3tinydict = {'Name': 'Tarzan', 'Age': 7, 'Class': 'First'}tinydict['Age'] = 8               # 更新 Age
tinydict['School'] = "泰山教程"  # 添加信息print ("tinydict['Age']: ", tinydict['Age'])
print ("tinydict['School']: ", tinydict['School'])

以上實例輸出結果:

tinydict['Age']:  8
tinydict['School']:  菜鳥教程

刪除字典元素

能刪單一的元素也能清空字典,清空只需一項操作。

顯式刪除一個字典用del命令,如下實例:

#!/usr/bin/python3tinydict = {'Name': 'Tarzan', 'Age': 7, 'Class': 'First'}del tinydict['Name'] # 刪除鍵 'Name'
tinydict.clear()     # 清空字典
del tinydict         # 刪除字典print ("tinydict['Age']: ", tinydict['Age'])
print ("tinydict['School']: ", tinydict['School'])

但這會引發一個異常,因為用執行 del 操作后字典不再存在:

Traceback (most recent call last):File "/runoob-test/test.py", line 9, in <module>print ("tinydict['Age']: ", tinydict['Age'])
NameError: name 'tinydict' is not defined

:del() 方法后面也會討論。

字典鍵的特性

字典值可以是任何的 python 對象,既可以是標準的對象,也可以是用戶定義的,但鍵不行。

兩個重要的點需要記住:

  • 不允許同一個鍵出現兩次。創建時如果同一個鍵被賦值兩次,后一個值會被記住,如下實例:
#!/usr/bin/python3tinydict = {'Name': 'Tarzan', 'Age': 7, 'Name': '小菜鳥'}print ("tinydict['Name']: ", tinydict['Name'])

以上實例輸出結果:

tinydict[‘Name’]: 小菜鳥

  • 鍵必須不可變,所以可以用數字,字符串或元組充當,而用列表就不行,如下實例:
#!/usr/bin/python3tinydict = {['Name']: 'Tarzan', 'Age': 7}print ("tinydict['Name']: ", tinydict['Name'])

以上實例輸出結果:

Traceback (most recent call last):File "test.py", line 3, in <module>tinydict = {['Name']: 'Runoob', 'Age': 7}
TypeError: unhashable type: 'list'

字典內置函數&方法

Python字典包含了以下內置函數:

函數描述實例
len(dict)計算字典元素個數,即鍵的總數>>> tinydict = {‘Name’: ‘Runoob’, ‘Age’: 7, ‘Class’: ‘First’}
>>> len(tinydict)
str(dict)輸出字典,可以打印的字符串表示。>>> tinydict = {‘Name’: ‘Runoob’, ‘Age’: 7, ‘Class’: ‘First’}
>>> str(tinydict)
“{‘Name’: ‘Runoob’, ‘Class’: ‘First’, ‘Age’: 7}”
type(variable)返回輸入的變量類型,如果變量是字典就返回字典類型。>>> tinydict = {‘Name’: ‘Runoob’, ‘Age’: 7, ‘Class’: ‘First’}
>>> type(tinydict)
<class ‘dict’>
dict.clear()刪除字典內所有元素
dict.copy()返回一個字典的淺復制
dict.fromkeys()創建一個新字典,以序列seq中元素做字典的鍵,val為字典所有鍵對應的初始值
dict.get(key, default=None)返回指定鍵的值,如果鍵不在字典中返回 default 設置的默認值
key in dict如果鍵在字典dict里返回true,否則返回false
dict.items()以列表返回一個視圖對象
dict.keys()返回一個視圖對象
dict.setdefault(key, default=None)和get()類似, 但如果鍵不存在于字典中,將會添加鍵并將值設為default
dict.update(dict2)把字典dict2的鍵/值對更新到dict里
dict.values()返回一個視圖對象
pop(key[,default])刪除字典 key(鍵)所對應的值,返回被刪除的值。
popitem()返回并刪除字典中的最后一對鍵和值。

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

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

相關文章

ES ElasticSearch安裝、可視化工具kibana安裝

1、安裝ES docker run -d --name es9200 -e "discovery.typesingle-node" -p 9200:9200 elasticsearch:7.12.1訪問測試&#xff1a; http://域名:9200/ 2、安裝kibana對es進行可視化操作 執行命令 docker run -d --name kibana5601 -p 5601:5601 kibana:7.1.12.修…

如何實現在公網下使用navicat圖形化工具遠程連接本地內網的MariaDB數據庫

公網遠程連接MariaDB數據庫【cpolar內網穿透】 文章目錄 公網遠程連接MariaDB數據庫【cpolar內網穿透】1. 配置MariaDB數據庫1.1 安裝MariaDB數據庫1.2 測試局域網內遠程連接 2. 內網穿透2.1 創建隧道映射2.2 測試隨機地址公網遠程訪問3. 配置固定TCP端口地址3.1 保留一個固定的…

Redis深入理解-Socket連接建立流程以及文件事件處理機制

Redis Server 運行原理圖 Redis 服務器中 Socket 網絡建立以及文件事件模型 一個 redis 單機&#xff0c;可以抗幾百上千的并發&#xff0c;這里的并發指的就是同時可以有幾百個 client 對這個 redis server 發起請求&#xff0c;都需要去建立網絡連接&#xff0c;同時間可能會…

利用 docker 實現JMeter分布式壓測

為什么需要分布式&#xff1f; 在工作中經常需要對一些關鍵接口做高QPS的壓測&#xff0c;JMeter是由Java 語言開發&#xff0c;沒創建一個線程&#xff08;虛擬用戶&#xff09;&#xff0c;JVM默認會為每個線程分配1M的堆棧內存空間。受限于單臺試壓機的配置很難實現太高的并…

YAML 深入解析:從語法到最佳實踐

什么是YAML YAML&#xff08;YAML Ain’t Markup Language&#xff09;是一種人類可讀的數據序列化語言。它的設計目標是使數據在不同編程語言之間交換和共享變得簡單。YAML采用了一種簡潔、直觀的語法&#xff0c;以易于閱讀和編寫的方式表示數據結構。 YAML廣泛應用于配置文…

【OpenCV實現圖像:制作酷炫的動畫效果】

文章目錄 概要生成背景圖添加點動畫添加文本顯示小結 概要 首先&#xff0c;通過導入必要的庫&#xff0c;包括NumPy用于數學運算和Matplotlib庫用于數據可視化。隨后&#xff0c;創建圖形和軸&#xff0c;初始化點的位置&#xff0c;以及編寫初始化函數和更新函數。 初始化函…

C語言歸并排序

以夢為馬&#xff0c;不負韶華 文章目錄 引入&#xff1a;實現原理問題引出&#xff1a;遞歸實現&#xff1a;迭代實現穩定性分析&#xff1a;總結&#xff1a; 引入&#xff1a; 如何將兩個有序數組&#xff08;假設為升序&#xff09;合并為一個有序數組&#xff1f; 雙指針…

yolov5/v7修改標簽和檢測框顯示【最全】

《記錄自己在使用yolov5遇到的一些問題》同時也供大家參考&#xff0c;如果對你們有幫助&#xff0c;希望大家可以給個點贊、收藏鼓勵下&#xff0c;非常感謝&#xff01; 以自帶的一張圖片作為示例,yolov5(6.1版本)的初始檢測框應該是如下圖所示 修改線條粗細、隱藏標簽、隱…

EI論文故障識別程序:DBN深度置信/信念網絡的故障識別Matlab程序,數據由Excel導入,直接運行!

?適用平臺&#xff1a;Matlab2021b版及以上 本程序參考中文EI期刊《基于變分模態分解和改進灰狼算法優化深度置信網絡的自動轉換開關故障識別》中的深度置信網絡&#xff08;Deep Belief Network&#xff0c;DBN&#xff09;部分進行故障識別&#xff0c;程序注釋清晰&#x…

Python之學生信息管理系統

目錄 一、基礎界面實現 1、主函數 2、保持循環&#xff0c;獲取用戶需求 二、函數實現模塊功能 1、添加學生信息 2、刪除學生信息 3、修改學生信息 4、查找全部學生信息 5、退出系統 三、整合代碼 1、 完整代碼 2、完整實現過程 實現 打印功能菜單、添加學生信息、刪…

想自學軟件測試?一般人我還是勸你算了吧。。。

&#x1f4e2;專注于分享軟件測試干貨內容&#xff0c;歡迎點贊 &#x1f44d; 收藏 ?留言 &#x1f4dd; 如有錯誤敬請指正&#xff01;&#x1f4e2;交流討論&#xff1a;歡迎加入我們一起學習&#xff01;&#x1f4e2;資源分享&#xff1a;耗時200小時精選的「軟件測試」資…

<keep-alive>作用及用法

<keep-alive>是Vue.js的內置組件。它用于緩存具有相同組件樹的組件。當組件使用<keep-alive>包裹時&#xff0c;組件不會被銷毀&#xff0c;而是會緩存到內存中&#xff0c;等到下次再次渲染時&#xff0c;直接使用緩存中的組件實例。 <keep-alive>有以下幾…

【Linux】共享內存

文章目錄 一、共享內存的原理詳談共享內存的實現過程二、共享內存的接口函數1.shmget2. shmatshmdtshmctl 進程間使用共享內存通信三、共享內存的特性 關于代碼 一、共享內存的原理 共享內存是由操作系統維護和管理的一塊內存。 共享內存的本質是內核級的緩沖區。 一個進程向…

C語言精華題目錦集1

第一題 test.c文件中包括如下語句&#xff0c;文件中定義的四個變量中&#xff0c;是指針類型的是&#xff08;&#xff09;【多選】 #define INT_PTR int* typedef int* intptr; INT_PRT a,b; int_ptr c,d;A:a ?B:b ?C:c ?D:d #define是宏定義&#xff0c;此時在程序中IN…

SQLite3 數據庫學習(六):Qt 嵌入式 Web 服務器詳解

參考引用 SQLite 權威指南&#xff08;第二版&#xff09;SQLite3 入門 1. Apache 搭建 cgi 環境 1.1 什么是 Apache Apache 是世界使用排名第一的 Web 服務器軟件 它可以運行在幾乎所有廣泛使用的計算機平臺上&#xff0c;由于其跨平臺和安全性被廣泛使用 1.2 具體搭建流程…

一、用戶管理

一、后端數據庫初始化 1.1 因為版本問題&#xff0c;始終報錯&#xff0c;按照報錯信息去查詢解決方案&#xff0c;無法解決 靈機一動&#xff1a; 網址&#xff1a; Spring Boot 3.0 升級 實戰踩坑記錄 - 掘金 (juejin.cn) &#xff11;.&#xff12; 個人配置【運行成功…

c++的三目運算符

C三目運算符增強 C中的三目運算符表達式返回的可以是一個變量&#xff0c;但是C語言中返回的是一個常量。 C語言中&#xff1a; void test05() { int a 10; int b 20; printf("%d\n", a < b ? a : b); //在C語言中三目運算符返回的是表達式的值&am…

Javascript每天一道算法題(十三)——最大子數組和_中等

文章目錄 動態規劃題三個重要步驟&#xff08;了解思路&#xff09;1、問題2、示例3、解決方法&#xff08;1&#xff09;方法1——動態規劃 總結 動態規劃題三個重要步驟&#xff08;了解思路&#xff09; &#xff08;1&#xff09;定義數組元素的含義 用一個數組來保存歷史數…

2020年06月 Scratch(三級)真題解析#中國電子學會#全國青少年軟件編程等級考試

Scratch等級考試(1~4級)全部真題?點這里 一、單選題(共25題,每題2分,共50分) 第1題 執行以下腳本后舞臺上的角色將 ? A:先克隆自身,克隆體出現后被刪除。 B:先克隆自身,克隆體出現后刪除本體。 C:克隆出自身后本體與克隆體同時被刪除。 D:克隆出自身后本體與克…

docker常用命令, 鏡像版本的導入、導出并加載,打包鏡像的命令

文章目錄 docker常用命令&#xff1a;打鏡像包&#xff1a;鏡像版本的導入、導出并加載 docker常用命令&#xff1a; 打鏡像包&#xff1a; ? docker build -t calc:20230630 /home/apps/calc/docker/ 刪除某個鏡像的版本&#xff0c;allen_mysql的5.7版本 docker rmi all…