Python字典中你必須知道的用法
本文Python版本為3.7.X,閱讀本文之前需先了解python字典的基本用法。
介紹
字典(dict)是Python中內建的一個資料結構,由多個鍵值對組成,鍵(key)和值(value)用冒號分隔,每個鍵值對之間用逗號(,)分隔,整個字典包括在大括號中({}),鍵必須是唯一的,值可以取任何類型,但是鍵必須是不可變類型,如字串,數字或元組。
推薦:《python教學#
底層使用了hash表來關聯key和value,dict是無序的。特點包括:
● 查找和插入的速度極快,不會隨著key的增加而變慢;
● 需要佔用的記憶體較多
所以, dict是一種以空間換取時間的資料結構,應用於需要快速尋找的場景。
操作:常用方法
get()
返回指定鍵的值,如果key不存在,則傳回預設值(預設為None ),而不會報錯,語法為dict.get(key)。
dict_1['age'] = 24 In [7]: print(dict_1.get('age')) 24 In [11]: print(dict_1.get('nama')) None In [12]: print(dict_1['nama']) --------------------------------------------------------------------------- KeyError Traceback (most recent call last) <ipython-input-12-ef61a380920e> in <module> ----> 1 print(dict_1['nama']) KeyError: 'nama'
key in dict
使用in運算子來判斷鍵是否存在於字典中,存在則傳回True,否則傳回False,語法為:key in dict 。
In [15]: dict_1 Out[15]: {'name': None, 'age': 24, 'sex': None} In [16]: print('name' in dict_1) True In [17]: print('nama' in dict_1) False
在python 2中該函數使用has_key()方法實作。
items()
以列表形式傳回可遍歷的(鍵, 值)元組數組,語法為dict.items()。
In [18]: dict_1 Out[18]: {'name': None, 'age': 24, 'sex': None} In [19]: print(dict_1.items()) dict_items([('name', None), ('age', 24), ('sex', None)]) In [20]: for key, value in dict_1.items(): ...: print(key, value) ...: name None age 24 sex None
keys()
以列表傳回一個字典的所有鍵:dict.keys()
In [21]: dict_1 Out[21]: {'name': None, 'age': 24, 'sex': None} In [22]: print(dict_1.keys()) dict_keys(['name', 'age', 'sex'])
values()
以列表形式傳回字典中的所有值:dict.values()
In [27]: dict_1 Out[27]: {'name': None, 'age': 24, 'sex': None, 'sub_name': 'Tony'} In [28]: print(dict_1.values()) dict_values([None, 24, None, 'Tony']) setdefault() 和get()类似,用户获得与给顶尖相关联的值,不同的是,该方法如果键不存在时会添加键并将值设为默认值,语法为:dict.setdefault(key, default=None)。 In [23]: dict_1 Out[23]: {'name': None, 'age': 24, 'sex': None} In [24]: print(dict_1.setdefault('name')) None In [25]: print(dict_1.setdefault('name', 'Tony')) None In [26]: print(dict_1.setdefault('sub_name', 'Tony')) Tony In [27]: dict_1 Out[27]: {'name': None, 'age': 24, 'sex': None, 'sub_name': 'Tony'}
update()
語法為:dict_1. update(dict_2),用來把dict_2的鍵值對更新到dict_1中,如果有相同的鍵會被覆寫。
In [31]: dict_1 Out[31]: {'name': None, 'age': 24, 'sex': None, 'sub_name': 'Tony'} In [32]: dict_2 Out[32]: {'name': 'Mary', 'age': 18, 'sex': None, 'sub_name': ''} In [33]: dict_1.update(dict_2) In [34]: dict_1 Out[34]: {'name': 'Mary', 'age': 18, 'sex': None, 'sub_name': ''}
clear()
刪除字典中的所有項,dict.clear(),舉例:
In [1]: dict_1 = dict(name="Tony", age=24) In [2]: dict_2 = dict_1 In [3]: print(dict_2) {'name': 'Tony', 'age': 24} In [4]: dict_2.clear() In [5]: dict_2 Out[5]: {} In [6]: dict_1 Out[6]: {}
copy ()
淺拷貝原始字典,傳回一個具有相同鍵值對的新字典,dict.copy(),舉個例子:
In [1]: dict_1 = dict(name='Tony', info=['boy', 24]) In [2]: dict_3 = dict_1.copy() In [3]: dict_3['name'] = "Ring" In [4]: dict_3['info'].remove('boy') In [5]: dict_3 Out[5]: {'name': 'Ring', 'info': [24]} In [6]: dict_1 Out[6]: {'name': 'Tony', 'info': [24]}
fromkeys()
建立一個新字典,dict.fromkeys(seq[, value]),以序列seq中的元素做字典的鍵,value為字典所有鍵對應的初始值,其中value為可選參數, 預設為None。適用於資料初始化,舉例:
In [1]: info = ['name', 'age', 'sex'] In [2]: dict_1 = dict.fromkeys(info) In [3]: dict_1 Out[3]: {'name': None, 'age': None, 'sex': None}
常見運算
#合併字典
##有四種方式:常規處理
In [15]: dict_1 Out[15]: {'Tony': 24} In [16]: dict_2 Out[16]: {'ben': 18} In [17]: dict3 = dict() In [18]: for key, value in dict_1.items(): ...: dict_3[key] = value ...: In [19]: for key, value in dict_2.items(): ...: dict_3[key] = value ...: In [20]: dict_3 Out[20]: {'Tony': 24, 'ben': 18}
update()
In [9]: dict_1 Out[9]: {'Tony': 24} In [10]: dict_2 Out[10]: {'ben': 18} In [12]: dict_3 = dict_1.copy() In [13]: dict_3.update(dict_2) In [14]: dict_3 Out[14]: {'Tony': 24, 'ben': 18}
借助字典的dict(d1, **d2)方法
In [33]: dict_1 Out[33]: {'Tony': 24} In [34]: dict_2 Out[34]: {'ben': 18} In [35]: dict_3 = dict(dict_1, **dict_2) In [36]: dict_3 Out[36]: {'Tony': 24, 'ben': 18}
進階
字典推導式
和列表推導式類似,優點是底層用C實現,會快很多,推薦使用。對換字典的鍵值
使用字典推導式可以輕鬆地對換一個字典的鍵值:In [42]: dict_4 Out[42]: {24: 'Tony', 18: 'ben'} In [43]: dict_3 Out[43]: {'Tony': 24, 'ben': 18} In [44]: dict_4 = {k:v for v, k in dict_3.items()} In [45]: dict_4 Out[45]: {24: 'Tony', 18: 'ben'}
從字典中提取子集
想建立一個字典,本身就是另一個字典的子集。 舉例:In [88]: a = {'Ben': 18, 'Jack': 12, 'Ring': 23, 'Tony': 24} In [89]: b = {k:v for k, v in a.items() if v > 18} In [90]: b Out[90]: {'Ring': 23, 'Tony': 24}
產生有序字典
在Python3.6之前的字典是無序的,但有時候我們需要保持字典的有序性,orderDict可以在dict的基礎上實現字典的有序性,這裡的有序指的是按照字典key插入的順序來排列,這樣就實現了一個先進先出的dict,當容量超出限制時,先刪除最早新增的key。 範例:In [49]: from collections import OrderedDict In [50]: ordered_dict = OrderedDict([('a', 2), ('b', 4), ('c', 5)]) In [51]: for key, value in ordered_dict.items(): ...: print(key, value) ...: a 2 b 4 c 5
合併列表中key相同的字典
也就是產生所謂的一鍵多值字典,需要將對應的多個值保存在其它容器例如列表或集合,取決於多值是否需要保證唯一性。 舉例:In [64]: from collections import defaultdict In [65]: a = [{'a': 1}, {'b': 3}, {'c': 4}, {'a':5}, {'b':2}, {'b': 4}] In [66]: b = defaultdict(list) In [67]: [b[k].append(v) for item in a for k, v in item.items()] Out[67]: [None, None, None, None, None, None] In [68]: b Out[68]: defaultdict(list, {'a': [1, 5], 'b': [3, 2, 4], 'c': [4]}) In [69]: b['a'] Out[69]: [1, 5]
尋找兩個字典的異同
場景:尋找兩個字典中的異同,包括相同的鍵或者相同的值。 分析:字典是一系列鍵值之間的對應集合,有以下特點:keys()會傳回字典中的所有鍵,而字典的鍵是支援集合運算的,所以利用集合的交叉並補即可對字典的鍵進行處理;items()返回(key, value)組成的對象,支援集合運算;values()並不支援集合操作,因為並不能保證所有的值是唯一的,但是如果必須要判斷操作,可以先將值轉換為集合來實現。 舉例:In [78]: a = {'a':1, 'b':2, 'c':3} In [79]: b = {'b':3, 'c':3, 'd':4} In [80]: a.keys() & b.keys() Out[80]: {'b', 'c'} In [81]: a.keys() - b.keys() Out[81]: {'a'} In [82]: a.items() & b.items() Out[82]: {('c', 3)}
In [85]: a Out[85]: {'a': 1, 'b': 2, 'c': 3} In [86]: c = {k: a[key] for k in a.keys() - {'b'}} In [87]: c Out[87]: {'a': 3, 'c': 3}
python教學欄目,歡迎學習!
以上是Python字典中你必須知道的用法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

JSP註解的分類及用法解析JSP註解分為兩種:單行註解:以結尾,只能註解單行程式碼。多行註解:以/*開頭,以*/結尾,可以註解多行程式碼。單行註解範例多行註解範例/**這是一段多行註解*可以註解多行程式碼*/JSP註解的用法JSP註解可以用來註解JSP程式碼,使其更易於閱

Python是一種解釋型的、物件導向的、高階的程式語言,具有動態語意。由GudioVanRossum於1991年開發。它支援多種程式設計範式,包括結構化、物件導向和函數式程式設計。在深入討論這個主題之前,讓我們先複習一下與我們提供的問題相關的基本概念。字典是一組獨特、可變且有序的項。在字典的書寫中使用花括號,它們包含鍵和值:鍵名可以用來引用字典物件。資料值以鍵:值對的形式保存在字典中。有序和無序意義當我們說字典是有序的時,我們是指其內容具有一定的順序,不會改變。無序的項目缺乏明確的順序,因此無法使用

Python中的字典是一種靈活且強大的資料結構,它可以儲存鍵值對,並且具備快速的查找和插入功能。然而,如果不小心處理字典的鍵值對,可能會遇到空字典鍵的問題。這個問題通常會導致程式碼崩潰或輸出非預期結果。本文將介紹兩種解決Python空字典鍵錯誤的方法。方法一:使用if語句防止空字典鍵Python的字典中不能有重複鍵,否則會覆寫先前的鍵值對。當一個字典鍵的值為空

字典是Python強大的資料類型。它由鍵值對組成。透過這種資料類型可以有效地完成搜尋、追加等操作。雖然存取字典中的值很簡單,但在某些情況下您可能需要在字典中尋找下一個鍵。 Python提供了多種方法來實現此目的,具體取決於您的特定要求。在本文中,我們將探索在Python中獲取字典中下一個鍵的不同方法。使用keys和index方法字典在Python中是無序集合。因此,我們首先需要將鍵轉換為某種有序形式。我們可以先將所有按鍵以列表的形式追加。接下來,我們可以透過索引列表來找到下一個鍵。借助鍵,我們還可以

c語言exit函數怎麼用,需要具體程式碼範例在C語言中,我們常常需要在程式中提前終止程式的執行,或是在某個特定的條件下退出程式。 C語言提供了exit()函數來實作這個功能。本文將介紹exit()函數的用法,並提供對應的程式碼範例。 exit()函數是C語言中的標準函式庫函數,它包含在頭檔中。它的作用是終止程式的執行,並且可以帶一個整數

WPS是一款常用的辦公室軟體套件,其中的WPS表格功能被廣泛用於資料處理和計算。在WPS表格中,有一個非常有用的函數,即DATEDIF函數,它用於計算兩個日期之間的時間差。 DATEDIF函數是英文單字DateDifference的縮寫,它的語法如下:DATEDIF(start_date,end_date,unit)其中,start_date表示起始日期

Python函數介紹:abs函數的用法和範例一、abs函數的用法介紹在Python中,abs函數是一個內建函數,用於計算給定數值的絕對值。它可以接受一個數字參數,並傳回該數字的絕對值。 abs函數的基本語法如下:abs(x)其中,x是要計算絕對值的數值參數,可以是整數或浮點數。二、abs函數的範例下面我們將透過一些具體的範例來展示abs函數的用法:範例1:計算

Python函數介紹:isinstance函數的用法和範例Python是一門功能強大的程式語言,提供了許多內建函數,使得程式設計變得更加方便和有效率。其中一個非常有用的內建函數是isinstance()函數。本文將介紹isinstance函數的用法和範例,並提供具體的程式碼範例。 isinstance()函數用來判斷一個物件是否是指定的類別或類型的實例。該函數的語法如下
