網站首頁 編程語言 正文
字典簡介
Python 中字典和集合也是非常相近的概念,而且從外觀看上去,也有那么一絲絲的相似,Python 語言中字典類型是非常靈活的,在實戰中的使用場景非常多,后續項目課中會反復涉及。
本篇博會從字典基本知識入手,為你展開字典類型數據的各個知識點。
首先我們看一下定義:
字典,是可變的無序集合(在 Python 最新版本中,已經變為有序),它是一種以鍵值對為基本元素,可以存放各種數據類型的容器,用大括號({}
)表示字典的開始和結束,元素之間用逗號(,
)進行分隔。
前面這段話的重點是【鍵值對】,也就是說字典中的每一個元素(每一項)都是由鍵和值組成的集合,先記住兩個單詞,鍵(Key)和值(Value),鍵值對中間用冒號(:
)分隔,例如字典中的一個元素(name:'橡皮擦'
),前面的 name 就是鍵,后面的字符串 橡皮擦
就是值,從鍵值對可以看出,字典屬于一對一的映射關系。
字典的聲明
使用空的大括號,可以直接聲明一個空字典。
my_dict= {} print(my_dict)
定義一個只有一個元素的字典。
my_dict= {'name':'橡皮擦'} print(my_dict)
定義由多個元素的字典。
my_dict= {'name':'橡皮擦','age':19} print(my_dict)
字典設置時對鍵和值的要求 鍵的要求如下: 鍵要唯一,也就是一個字典對象所有的鍵必須唯一,出現相同的鍵值對,只保留最后一個,例如下述代碼:
my_dict= {'name':'橡皮擦','name':'擦哥','age':19} print(my_dict)
鍵名無法直接修改,只能刪除原有鍵值對,再新增鍵值對實現對鍵名的修改。
字典的基本方法
字典作為 Python 中的一個普通對象,其存在一些基本操作方法,具體如下。
-
clear()
:清空字典; -
get()
:通過指定鍵,或者對應值,如果鍵不存在,返回 None; -
keys()
:獲取所有鍵; -
values()
:獲取字典中所有值; -
items()
:以元組格式返回字典中的所有元素; -
fromkeys()
:使用給定的鍵建立新字典,每個鍵對應的值默認為 None,可以初始化一個字典; -
pop()
:刪除指定鍵,并返回鍵對應的值; -
popitem()
:隨機返回元素,并刪除; -
setdefault()
:設置鍵值對,當字典中鍵不存在,新增,當字典中存在鍵值對時,獲取對應的值; -
update()
:使用一個字典更新另一個字典;
字典元素添加
向字典中添加元素,可以使用如下幾種形式。
第一種,直接添加,即一次性添加鍵值對。
my_dict= {'name':'橡皮擦'} my_dict["age"] = 19 # 直接添加 print(my_dict)
用上述方法添加鍵值對,需要注意添加的鍵在原字典中不存在,否則會執行更新操作。
第二種,通過 setdefault()
給字典添加新鍵值對,代碼如下:
my_dict= {'name':'橡皮擦'} my_dict.setdefault('age',19) print(my_dict)
setdefault()
方法添加已存在的鍵時,不執行添加操作,會返回原鍵對應的值,請測試下述代碼。
my_dict= {'name':'橡皮擦'} my_dict.setdefault('name',19) print(my_dict)
獲取字典鍵對應的值
通過鍵獲取值,有如下兩種形式,例如通過指定鍵查找對應值。
my_dict= {'name':'橡皮擦'} ret = my_dict['name'] print(ret)
該方法如果指定了一個不存在的鍵,會直接報錯,錯誤信息如下所示。
--------------------------------------------------------------------------- KeyError Traceback (most recent call last) <ipython-input-11-3e4eeea728e6> in <module> 1 my_dict= {'name':'橡皮擦'} ----> 2 ret = my_dict['name1'] 3 print(ret) KeyError: 'name1'
使用 get()
方法也可以獲取鍵對應的值,使用該方法獲取值的時候,如果鍵不存在,不會報錯,并且返回 None。
my_dict= {'name':'橡皮擦'} ret = my_dict.get('name1') print(ret)
如果不希望結果返回 None,可以設置缺省返回值,即使用 get()
方法的第二個參數。
my_dict= {'name':'橡皮擦'} ret = my_dict.get('name1','無該值') print(ret)
字典元素的修改
字典由于鍵不可被修改,所以只能修改值,下面的兩個方法都可以修改值。 第一種方法在前文已經學習,即使用中括號加鍵進行修改,這里咱們不再重復講解,而為大家介紹 update()
方法,該方法可以通過字典修改原字典。
my_dict= {'name':'橡皮擦'} my_dict.update({'name':'大橡皮擦','age':19}) print(my_dict)
使用 update()
方法過程中,你需要注意到,該方法還可以對原字典進行新增操作,即當待添加的字典中存在原字典未包含的鍵時,會執行新增操作。
字典元素的刪除
有 1 個函數和 2 個方法可以實現字典元素的刪除。 第一個函數是 del()
,該函數可以直接刪除字典對象,也可以刪除字典中的鍵值對,代碼如下:
my_dict= {'name':'橡皮擦'} my_dict.update({'name':'大橡皮擦','age':19}) del(my_dict['age']) print(my_dict)
使用 pop()
方法刪除,示例代碼如下:
my_dict= {'name':'橡皮擦'} my_dict.update({'name':'大橡皮擦','age':19}) ret = my_dict.pop('age') print(ret)
如果使用 pop()
方法刪除不存在的值,會直接報錯,未防止該現象發生,可以使用 pop()
方法的第二個參數。
my_dict= {'name':'橡皮擦'} my_dict.update({'name':'大橡皮擦','age':19}) ret = my_dict.pop('age1',10010) print(ret)
使用 popitem()
方法會隨機刪除一個元素,示例代碼如下:
my_dict= {'name':'橡皮擦'} my_dict.update({'name':'大橡皮擦','age':19}) ret = my_dict.popitem() print(ret)
字典的遍歷
使用 keys()
,values()
和 items()
可以對字典進行遍歷,其對應關系分別是遍歷所有鍵,遍歷所有值,遍歷所有鍵值。
my_dict= {'name':'橡皮擦'} my_dict.update({'name':'大橡皮擦','age':19}) print(my_dict.keys()) print(my_dict.values()) print(my_dict.items())
輸出結果如下:
dict_keys(['name', 'age']) dict_values(['大橡皮擦', 19]) dict_items([('name', '大橡皮擦'), ('age', 19)])
集合學習
首先依舊是掌握集合的定義,集合是一個無序的,可變的,不重復的容器,集合用大括號({}
)標記開始和結束,中間的元素用逗號進行分隔,集合可以容納任意類型的數據,而字典其實是特殊的集合,所以在學習的時候,可以對比字典進行練習。
集合的定義 集合也是使用大括號({}
)定義的,但不能使用一個空大括號,這樣 Python 會認為聲明了一個空字典,如果希望聲明空集合,需要用 set()
函數。
my_set= set() print(my_set)
聲明包含一個元素的集合。
my_set = {1,} print(type(my_set))
集合添加元素
使用 add()
方法可以添加元素,示例代碼如下所示:
my_set = set() my_set.add('橡皮擦') print(my_set)
使用 update()
可以一次增加一個元素,也可以增加多個元素。
my_set = set() my_set.update({'橡皮擦',28}) print(my_set)
集合刪除元素
使用 discard()
、remove()
、pop()
方法可以刪除集合中的元素,示例代碼如下。 使用 discard()
可以刪除指定元素,若元素不存在,不報錯(很重要)
my_set = set() my_set.update({'橡皮擦',28,'石家莊','產品經理'}) my_set.discard('石家莊') print(my_set)
使用 remove() 可以刪除指定元素,若元素不存在,報錯(很重要)
my_set = set() my_set.update({'橡皮擦',28,'石家莊','產品經理'}) my_set.remove('石家莊') print(my_set)
使用 pop() 可以隨機刪除一個元素,并返回被刪除的元素
統計集合個數,判斷元素是否存在,清空集合
如題所示,該小節存在 3 個知識點,分別是 len()
、in 成員運算符
、clear()
,示例代碼如下。
len() 函數用法
my_set = set() my_set.update({'橡皮擦',28,'石家莊','產品經理'}) my_set.discard('石家莊') print(len(my_set))
in 成員運算符用法
my_set = set() my_set.update({'橡皮擦',28,'石家莊','產品經理'}) ret = '石家莊' in my_set print(ret)
clear() 方法使用
my_set = set() my_set.update({'橡皮擦',28,'石家莊','產品經理'}) my_set.clear() print(my_set)
集合運算
Python 語言中的集合于數學中的集合概念基本一致,所以其包含交并差集的計算,接下來為大家逐一說明。
求并集 union() 方法
A = {1,2,3} B = {4,5,1} ret = A.union(B) print(ret)
還可以使用 |
符號。
A = {1,2,3} B = {4,5,1} ret = A | B print(ret)
求交集 intersection()
方法,也可以使用 intersection_update()
方法 二者的區別是前者返回新集合,后者在原集合上進行更新。
A = {1,2,3} B = {4,5,1} ret = A.intersection(B) print(ret)
對比下述代碼,查看區別。
A = {1,2,3} B = {4,5,1} ret = A.intersection_update(B) print(ret) # 返回None print(A)
使用符號 &
也可以實現交集操作,同 intersection()
方法。
求差集 difference()
方法 求差異的時候需要注意誰在前誰在后問題,即 A-B 和 B-A 得到的結果是不同的。
A = {1,2,3} B = {4,5,1} ret = A.difference(B) print(ret)
求差異也可以使用符號 -
實現,代碼請自行編寫。
原文鏈接:https://juejin.cn/post/7159849560553046030
相關推薦
- 2023-02-07 詳解C#如何實現窗體換膚_C#教程
- 2022-12-06 React?Hook中的useEffecfa函數的使用小結_React
- 2022-08-04 react項目優化配置的操作詳解_React
- 2022-10-28 Python入門之列表用法詳解_python
- 2022-05-26 .Net解決引用程序集沒有強名稱報錯_實用技巧
- 2022-03-17 Android跳轉三方應用實例代碼_Android
- 2022-04-04 git push報錯Proxy CONNECT aborted
- 2022-05-26 Flutter實現滑動塊驗證碼功能_Android
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支