Python字典

Python字典(dictionary)基礎與16種操作

Python字典,給你的感覺是一個很複雜的資料結構嗎?這篇文章教你如何拆解字典內含的元素,讓你看到字典不再煩悶。

來到字典的這篇文章,代表你在建立自己Python知識大樓上,基礎又更穩固了。

隨著你學習Python的進度慢慢推進,一步一步的認識各種資料型態,從最單純的整數(integer),到字串(string)、串列(list),瞭解不同的資料型態的呈現方式、有什麼特性,以及如何操作。

認識字典(dictionary)這個資料型態前,我們先用字串來回顧一下,什麼是資料的呈現方式、特性、操作;如果你很熟悉了,可以點擊快速閱讀,選擇你所需要的Python字典資訊。

回顧字串這個資料型態,它的呈現方式是兩端會有引號,像是這樣:

'good job!'

字串的特性是,它是不可變的資料型態。

字串操作上呢,你可以使用len()函式來取得字元數量,利用方法(Method)如split()join()進行分拆及結合,當然還有許多各式各樣的操作。

看到這,如果你對字串的印象有些模糊,可以連結到〈Python字串(string)基礎與20種常見操作〉這篇文章,喚起你的記憶。

小結一下字串呈現方式、特性、操作:

  • 呈現方式:兩端有引號
  • 特性:不可變的資料型態
  • 操作:len()函式,split()join()等方法

簡單的利用字串回顧了資料型態的呈現方式、特性、操作是什麼後,進入正題,我們來看看字典(dictionary)是什麼?

Python字典(dictionary)是什麼?

講到字典,相信大家都知道是什麼東西,可能你會聯想到國語字典、英文字典,甚至可能會想起當年你在學校查字典比賽拿到的獎品:一本字典。

當你有生詞、單字不懂,你可以透過紙本字典或是網路上的數位字典找出它的意思。那麼,生活經驗中的字典,與Python字典一樣嗎?

概念是相似的,只是角色不同罷了。

生活中,你查字典是進行查詢的動作,有人編輯好字典讓你查到你需要的資訊;在Python程式語言裡,你編寫程式碼,製作字典讓電腦來查詢,電腦瞭解意思後,去執行你希望它幫你做的事。

 所以學習字典就是學會編寫出一個Python看得懂的字典,要讓Python看得懂,就需要瞭解Python字典語法(syntax),語法包括資料型態的呈現方式、特性及操作。

呈現方式

首先我們來看一下,字典長怎樣。

下方程式碼就是一個字典,兩端有大括號{}包覆,大括號內的項目使用逗號區隔,每個項目內都有冒號,形成相對應的查找功能。

{'Muffin':39, 'Scone':25, 'Biscuit':20}

學會字典是以大括號來表示,對你應該不是難事,比較難理解的可能是大括號內又是冒號,又是逗號,還有引號的表示方式,讓你覺得字典就像是大括號內放了一團難解的毛線球,無從理解起。

如果你有這個問題,馬上來看看如何找出毛線球的線頭,兩個步驟個解析字典這個資料型態。

第一步-找出逗號

與串列一樣,字典的每個項目也都是用逗號作區隔。

{'Muffin':39, 'Scone':25, 'Biscuit':20}

這個字典有三個項目'Muffin':39'Scone':25'Biscuit':20

第二步-找出冒號

看懂每個項目分別是什麼後,再來請在項目內找到冒號:,冒號是字典的特色,利用冒號來帶出相對應的指引,以'Muffin':39這個項目來說,'Muffin’對應到39,以此類推,'Scone'對應25'Biscuit'對應20

'Muffin'以引號來表示,代表它是字串(string);39則是整數(integer),如果以'39'表示就代表字串,使用整數或字串有什麼差別呢?有喔!整數可以進行數學的加、減、乘、除運算,字串不行。

這樣的對應方式,就跟你平常在使用字典很像。舉例來說,假如你不懂Muffin這個英文單字是什麼意思,查字典會查到Muffin所對應的意思是鬆餅,雖然很多麵包店直接把Muffin音譯為馬芬,但它本質上就是鬆餅。

走過找出逗點,尋找冒號的2個步驟後,下方這個段字典的程式碼是不是好懂很多了呢? 

desserts = {'Muffin':39, 'Scone':25, 'Biscuit':20}

如果再發揮一點想像力,把每個項目內對應的數字當成價格,是不是就形成了一個價目表,Muffin 39元,Scone 25元,Biscuit 20元,你想吃哪一個呢?

看懂字典的呈現方式後,我們來瞭解一下,大家都怎麼稱呼大括號內所包含東西,並以點心(desserts)的例子作說明。

desserts = {'Muffin':39, 'Scone':25, 'Biscuit':20}
字典的鍵與值
字典的鍵與值
  1. 項目(item)
    以逗號區隔開的程式碼。
    'Muffin':39 是一個項目(item), 'Scone':25也是一個項目, 'Biscuit':20 當然也是一個項目。
  2. 鍵(key)
    每個項目內,冒號左邊的為鍵(key),必須為不可變的資料型態,通常使用字串。
    'Muffin'就是'Muffin':39這個項目中的鍵(key),其他兩個項目的鍵你知道是什麼嗎?是'Scone''Biscuit'
  3. 值(value)
    每個項目內,冒號右邊的為值(value),可變或不可變的資料型態都可以。
    'Muffin':39這個項目的值(value)是39'Scone''Biscuit'這兩個鍵(key)對應的值(value)是2520

對項目(item)、鍵(key)、值(value)的英文單字有個印象,會對你之後學習操作字典有幫助。就好像你在學習看地圖,北方的英文單字是North,地圖的上的N就代表北方,取North的第一個字母代表,瞭解英文單字可以幫助你理解方位的表示,也可以幫助你理解程式語言。

認識Python字典的外表後,接著來看看它的內涵吧;Python世界裡,面對各種資料型態,你需要看重的內涵是它是否可變。

特性

字典有兩個重要的特性:

  • 可變的資料型態
  • 沒有順序性

我們逐一來探討這兩個特性。

首先,字典屬於可變(mutable)的資料型態,可變的意思是你可以透過各類操作,直接改變字典內的資料。其他可變的資料型態包括串列(list)、集合(set)。

再來,有順序性是什麼意思呢?就是指資料的排序不會改變,例如字串、串列都是有順序性的資料型態,你可以數字來指出各個字元或值所在的位置。

例如'Muffin'這個字串,index 0的位置是字元M

>>> 'Muffin'[0]
M

但字典是沒有順序性的,所以你無法使用index來查找字典內的資料。

剛開始學習Python,你可能會對資料型態可變與否,是否有順序性覺得相當混亂,這是很正常的。

學習新的東西,會混亂代表你很努力地在學習新的知識(腦袋空空會混亂嗎?應該是一片寧靜,不過如果思緒都釐清了,會恢復一片祥和的)。

腦袋還在消化吸收新知,就像在電腦安裝新軟體,給它點時間,它會安裝好的,如果你硬是要同時安裝100個軟體,當機也是很正常的。

除此以外,你不需要逼迫自己要立刻把各種資料型態的特性背起來,以為這樣才可以學好程式語言。真的不需要,在你練習打程式碼的過程中你會記得的,因為你會發現原來可不可變有這樣的用處,有沒有順序性會導致如此的結果。

除了學習Python的知識外,多練習編寫程式碼,從各種練習中去釐清你所學到的資料型態、語法,你會有更深刻的體悟,也會很有成就感,當程式碼順利運作時,是件很開心的事。

回到主題,字典的重要特性是可變的、無順序性。

瞭解字典的外表與內涵後,接下來開始學習操作字典囉。當然,操作前總是要先建立字典,有了字典才能操作,先來看看怎麼建立字典吧。

如何建立字典

建立各種資料型態的物件,不外乎使用應有的符號、或是用函式來建立,這裡我們介紹3種建立Python字典的方式,分別是:

  • 使用大括號{}建立字典
  • 使用dict()函式建立字典
  • 使用生成式建立字典

有些建立字典的方式可能有點複雜,剛開始看不懂沒關係,你可以只學會一種建立字典的方式,依然可以繼續學習如何操作字典。其他的方式有個印象,知道這樣子的程式碼是會變出字典就可以了。

使用大括號{}建立字典

直接使用大括號{}建立字典是最直觀、也最簡單的建立字典方式。你可以只會這個建立字典的方式,然後跳到字典操作的段落繼續學習。

這個方式是這樣的,大括號內的項目以逗號隔開。項目內的鍵與值以冒號作為相對應的表示,例如前面所舉的desserts字典的例子。

desserts = {'Muffin':39, 'Scone':25, 'Biscuit':20}

另外,最簡單的字典是空的:

empty_dictionary = {}

有個跟字典很相像資料型態:集合(set),集合也是使用大括號包覆在元素的兩端,不同的是裡頭沒有冒號,只有逗號區隔開每個項目。

>>> a_set = {1, 2, 3}

空集合怎麼表示呢?

set()

set()就是空集合,而{}是空字典。

使用dict()函式建立字典

搭配鍵與值的序列,使用dict()函式建立字典

「鍵與值的序列」聽起來有點拗口,再說明的白話一點就是兩兩成對的序列,可以搭配dict()函式來建立字典,dict是取字典(dictionary)的英文前四個字來表示。

下方afternoon_tea就是一個「鍵與值的序列」

>>>afternoon_tea = [['Muffin', 39], ['Scone', 25], ['Biscuit', 20]]

afternoon_tea串列內的項目還是串列,內層的串列我們就稱它為子串列,每個子串列都兩兩成對。

搭配dict()函式時,Python會把子串列中的首個項目當成鍵(key),另一個則當成值(value)。

>>>dict(afternoon_tea)

執行程式碼後,得到的字典像這樣:

{'Muffin': 39, 'Scone': 25, 'Biscuit': 20}

「鍵與值的序列」也可以是tuple,afternoon_tea的例子中,你可以把串列替換為tuple,一樣可以建立字典。

除了看起來很明顯就是兩兩成對的序列外,雙字元的字串也可視為「鍵與值的序列」。

>>> number = ('a1', 'b2', 'c3', 'd4')
>>> dict(number)
{'a': '1', 'b': '2', 'c': '3', 'd': '4'}

字串中的首個字元,會被Python視為鍵,另一個字元視為值。

鍵是字串時,利用變數與賦值概念建立字典

在介紹字典是什麼的段落,我們有提到鍵(key)必須是不可變的資料型態,如果你使用下述的方法建立字典,鍵的資料型態會再限縮為字串(string)。

>>> dict(Muffin=39, Scone=25, Biscuit=20)

建立的字典會是這樣:

{'Muffin': 39, 'Scone': 25, 'Biscuit': 20}

這個方法使用等號表示鍵所對應的值。

要注意的是,鍵不可以是保留字,而且在dict()函式內,鍵以變數方式表示,也就是說,鍵的位置你不是填入字串,而是一個變數。再看一眼程式碼中的Muffin,是以變數呈現,不是字串,因為兩端沒有引號,你注意到了嗎?

待程式碼運作後,鍵的位置才會是字串。

使用zip()函式建立字典

zip()函式可以同時迭代多個序列,序列可以是串列、tuple,返回的值是一個zip物件。

要利用dict()zip()函式建立字典,你會需要有兩個序列,把這兩個序列做為zip()的引數,產生字典。下

方的例子就是以這樣的方式建立字典:

>>> name = ['Muffin', 'Scone', 'Biscuit']
>>> price = [39, 25, 20]
>>> dict(zip(name, price))

執行程式碼結果如下:

{'Muffin': 39, 'Scone': 25, 'Biscuit': 20}

使用生成式(dict comprehensions)建立字典

字典生成式的英文是 dict comprehensions,想使用這個方式建立字典,你需要先對for迴圈有認識,對變數也要有一定的熟悉度。

如果你對for迴圈不瞭解,你可以參考《 Python for 迴圈(loop)的基本認識與7種操作》這篇文章;關於變數的觀念,《Python觀念,從 = 開始》文章的「變數是一個名稱」段落可以幫助你。

利用生成式建立字典你會需要3個工具:

  • 大括號 {}
  • 冒號 :
  • 變數
  • for迴圈

字典生成式:

{代表鍵的變數 : 代表值的變數 for 可迭代物}

字典生成式的公式看起來相當的抽象,直接看下方的例子來理解吧。(**是平方的意思,x**2就代表x2)

>>> {x: x**2 for x in range(1, 4}
{1: 1, 2: 4, 3: 9}

如果你對字典生成式有興趣,想瞭解更詳細的介紹,你可以參考Python的官方文件。

字典的16種操作

介紹各種操作前,先釐清一下,本文中我們把字典內的東西稱呼為元素,因為項目(item)、鍵(key)、值(value)在字典中都有所指,避免混淆故把放在字典裡的東西以元素表示。

讓我們來看看如何對字典,進行元素提取增加改變刪除計算項目數量的操作吧!

取得字典內的元素

買了一本字典、或打開字典網站,你的目的就是要查找資料。當你建立了字典後,如何取得字典內所含括的資料呢? 接下來分享6個取得字典元素的操作給你知道:

使用中括號[]與鍵(key)取得指定的值(value)

先來回顧一下中括號[]與其他資料型態的搭配,中括號如果搭配字串、串列或tuple使用,可以取得指定位置的字元或項目。

舉例來說,建立一個名為a的串列,串列內包含了三個a開頭的疏果單字,分別是almond(杏仁)、apple(蘋果)、avocado(酪梨),如果你想取得位置0的水果,你可以這麼做:

>>> a = ['almond', 'apple', 'avocado']
>>> print(a[0])

執行程式碼,就得到第0個位置的疏果是almond。

almond

由於字串、串列、tuple都序列性的資料型態,所以可以使用index來取得字元或項目,換言之你可以很明確地告訴Python你要的東西所在的位置,序號為何,給Python一個數值,它就會回傳你要的字元或項目給你。

然而字典是沒有順序的資料結構,你沒有辦法指出第0個位置、第1個位置是什麼。但是字典有個很強大的功能,就是每個項目(item)都是鍵(key)與值(value)的配對,每個鍵(key)都有對應的值(value),這讓你找東西就更容易了,你不需要知道你需要的東西在哪個位置,只要記得他的鍵(key)是什麼,Python就可以回傳對應的值(value)給你。

馬上來看個例子,這次我們來做一個冰箱(fridge)裡放各種疏果數量的字典。

>>> fridge = {'almond': 5, 'apple': 2, 'avocado': 10}

建立這個字典的人大概很愛吃酪梨(avocado),冰箱裡放了10個酪梨,三不五時就要檢查冰箱裡還有幾個酪梨,透過字典他可以很快查詢到冰箱還有幾個酪梨,只需在中括號內打上’avocado’這個字串就可以知道冰箱還剩幾個酪梨了。

>>> fridge['avocado']
10

使用get()方法(Method)取得指定的值(value)

get()方法除了可以取得鍵(key)所對應的值(value),它還可以在字典不存在這個鍵(key)的時候,可以回傳備用的值。

字典.get(鍵, 備用的值)

我們來舉個例子,情境是這樣的,你要去採買,用字典列出了你要採買的東西還有數量,東西的名稱你將它設為鍵(key),數量設為值(value)。

下方的to_buy字典,你放了兩個項目,代表你要買3個蘋果(apple)、5包杏仁(almond)。

>>> to_buy = {'apple':3, 'almond':5}

出門採購前,你想確認採買的數量,而且你其實需要採購酪梨(avocado),你不清楚有沒有把酪梨的採購數量放入to_buy字典,假如字典有採買的數量,你就按照字典的數量採購,沒有的話,你要買10個酪梨。

>>> to_buy.get('avocado', 10)
10
>>>to_buy.get('apple')
3
>>>to_buy.get('almond')
5
>>> to_buy
{'apple': 3, 'almond': 5}

使用get()方法可以幫你取得對應的值,如果項目存在可以返回備用值,字典的項目不會被改變。

get()方法要點:

  1. 當鍵存在時
    回傳對應的值,即便你在第2個參數打上備用值,依然會回傳字典內原有的對應值。備用值只有在項目不存在時才會啟用。
  2. 當鍵不存在時
    回傳get()第2個參數所列的備用值。

使用setdefault()方法取得指定的值,並把不存在的項目加入

介紹setdefault()方法前,我們先瞭解一下字面的英文意思。

你可以把setdefault看成兩個單字,set與default,在這裡,set的意思是設置default預設、默認,setdefault就是默認的設置、預設的設置之意。

看懂英文的意思後,我們來看看如何使用setdefault()方法,他的功能與get()方法有點像,不同點在於,當你指定的鍵與值不在字典裡,setdefault()可以幫你加進字典中,setdefault()具有取得值及增加項目的功用。

一樣使用剛剛建立的 to_buy字典來說明,這次用setdefault()方法來取得蘋果與酪梨數量。

>>> to_buy = {'apple':3, 'almond':5}
>>> to_buy.setdefault('apple', 1)
3
>>> to_buy.setdefault('acavodo', 10)
10
>>> to_buy
{'apple': 3, 'almond': 5, 'acavodo': 10}

你可以從上方的程式碼發現,執行後回傳蘋果的數量3,酪梨的採買數量10,因為字典裡已經寫好要買3個蘋果,所以備用的數量1沒有被接納,酪梨則因為不存在字典中,所以備用的值10被接納了,而且 'acavodo': 10成功加入to_buy字典中。

使用keys()方法取得所有的鍵(key)

接下來要介紹的三個方式其實都是相似的概念,使用keys()values()items()來取得所有的鍵、值、項目。

有個小細節要注意,這三個方法內的英文字母都是以複數呈現,記得都要加上s喔。

再把前面的下午茶afternoon_tea字典再拿來舉例,使用keys()來取得字典中的所有鍵。

>>> afternoon_tea = {'Muffin': 39, 'Scone': 25, 'Biscuit': 20}
>>> afternoon_tea.keys()

執行程式碼回傳:

dict_keys(['Muffin', 'Scone', 'Biscuit'])

你有發現回傳的東西前面有dict_keys嗎?這代表它是dict_keys資料型態,如果你希望回傳串列,使用list()函式就可以了。

>>> list(afternoon_tea.keys())
['Muffin', 'Scone', 'Biscuit']

使用values()方法取得所有的值(value)

>>> list(afternoon_tea.values())
[39, 25, 20]

使用items()方法取得所有的項目(item)

取得所有的項目,並回傳串列這個資料型態

>>> list(afternoon_tea.items())
[('Muffin', 39), ('Scone', 25), ('Biscuit', 20)]

keys()values()items()這三個方法很常與for迴圈結合使用,你可以參考《Python for 迴圈(loop)的基本認識與7種操作》這篇文章「迭代字典(dictionary)」段落,瞭解它們是怎麼合作的。

檢查字典內的元素

使用in成員運算子檢查

跟檢查串列(list)中是否存在特定的項目一樣,可以使用in運算子,字典中如果有你要找的鍵就會回傳True,沒有就是False

>>> 'Muffin' in afternoon_tea
True

以此類推,如果你使用not in 來檢查,Python就會幫你檢查,指定的元素是否不存在字典中。

>>> 'Scone' not in afternoon_tea
False

Scone 有在字典中,所以回傳False。

使用 == 或 != 比較運算子

如果你有兩個字典,你想檢查它們所擁有的元素一不一樣,你可使用比較運算子 ==!= 來檢查。

>>> this = {'a':1, 'b':2, 'c':3}
>>> here = {'a':1, 'c':3, 'b':2}
>>> this == here
True

看到上方的程式碼執行後返回True,就代表兩個字典內的元素是一樣的囉,名叫 thishere的這兩個字典裡頭的鍵與值是相同的。因為Python字典不是序列型的資料型態,所以只要項目相同,順序不同沒有關係。

而如果你使用 != 來檢查,則會回傳False,一樣內容的字典,你問Python它們內含的項目是否不一樣,Python當然會答你:錯,False

>>> this = {'a':1, 'b':2, 'c':3}
>>> here = {'a':1, 'c':3, 'b':2}
>>> this != here
False

須要留心的是,雖然兩個字典內含的項目一樣,但你可以說this here是同一個物件嗎?不行喔。

讓我們有請 is 運算子來評斷,is 這個運算子可以判別 this here 字典是不是同一個物件,如果是同一個物件會回傳True,不是的話會回傳False

>>> this is here
False

經過is運算子的決斷,這兩個字典不是同一個物件,但兩個字典所含的項目都相同。

改變字典內的元素,使用[]與=

直接進入情境來說明,假設你是咖啡廳老闆,因為原物料上漲,你要把Muffin的價格調高到49元,你可以用賦值的方式,直接把新的價錢賦予給Muffin。

原本的下午茶字典如下:

>>> afternoon_tea = {'Muffin': 39, 'Scone': 25, 'Biscuit': 20}

為了調整價格,你需要把’Muffin’所對應的值改變為49。

>>> afternoon_tea['Muffin'] = 49
>>> afternoon_tea

執行程式碼,看看是不是把Muffin價格改成49了。

{'Muffin': 49, 'Scone': 25, 'Biscuit': 20, 'ice cream': 9}

成功把Muffin價格改成49。

使用 = 這個賦值符號,把你要改變的值賦予到該指定的鍵上,值就被你改變囉。

增加字典的元素

使用 [] 與 = 增加項目

延續前面改變Muffin價格的方式,如果你想增加可頌(croissant)這個品項,定價38元,你可以這樣做:

>>> afternoon_tea['croissant'] = 38
>>> afternoon_tea

執行程式碼驗證看看:

{'Muffin': 49, 'Scone': 25, 'Biscuit': 20, 'croissant': 38}

可頌(croissant)直接加到字典裡囉!

使用 [ ]= 對字典進行變更或新增,取決於字典內是否原本就有那個項目,如果有就會變更值,沒有的話便新增項目。

使用setdefault()方法增加項目

setdefault()方法除了可以檢查字典內是不是有對應的值,當字典中不存在指定的鍵與值時,便可以增加項目進字典中。

同樣以afternoon_tea這個字典來說明:

>>>afternoon_tea ={'Muffin': 49, 'Scone': 25, 'Biscuit': 20}  
>>>afternoon_tea.setdefault('croissant', 38)

執行程式碼,會回傳:

38

看到setdefault()第二個引數38回傳出來,就表示你成功加入’croissant’: 38這個項目了。

輸入afternoon_tea來驗證看看吧:

>>> afternoon_tea

執行程式碼回傳:

{'Muffin': 49, 'Scone': 25, 'Biscuit': 20, 'croissant': 38}

使用update()方法增加項目

update的英文意思是更新,Python中的update()可將另一個字典更新到你的字典中。

從例子來看如何使用:

因為國內旅遊興盛,你的咖啡廳生意大好,但常被顧客反應餐點太少,所以你打算一次新增三個新甜點,回應顧客的需求。

你為新甜點做出了一個名為new_desserts的字典,新菜單有鬆餅(waffle)、可麗餅(crepe)、馬卡龍(macaron)。

>>> new_desserts = {'waffle':180, 'crepe':160, 'macaron':200}

接著使用update()方法,將new_desserts字典更新到afternoon_tea字典中。

>>> afternoon_tea.update(new_desserts)
>>> afternoon_tea

執行程式碼,來看看afternoon_tea是不是加上了新菜單:

{'Muffin': 49, 'Scone': 25, 'Biscuit': 20, 'croissant': 38, 'waffle': 180, 'crepe': 160, 'macaron': 200}

成功更新菜單了,昂貴的三個甜點加入銷售!

假如new_desserts字典中有重複的項目,new_desserts內的元素會更新進去afternoon_tea中。

>>> afternoon_tea = {'Muffin': 49, 'Scone': 25, 'Biscuit': 20, 'croissant': 38}
>>> new_desserts = {'waffle':180, 'crepe':160, 'macaron':200, 'Scone':999999}
>>> afternoon_tea.update(new_desserts)
>>> afternoon_tea

執行程式碼,看看重複的'Scone',在更新後的字典中會是什麼狀況:

{'Muffin': 49, 'Scone': 999999, 'Biscuit': 20, 'croissant': 38, 'waffle': 180, 'crepe': 160, 'macaron': 200}

你的員工不小心把標示天價的司康(Scone)也加到new_desserts 字典中,afternoon_tea一更新你才發現,哇~司康(Scone)標價變成了天價,要999,999元。

看到這你有沒有發現一件事,其實update()方法也含有更動字典的功能。

刪除字典內的元素

使用del陳述句刪除項目

del 陳述句可以刪除字典中的項目,搭配指定的鍵,你可以精準執行刪除。

再回到咖啡店的情境,你必須馬上把司康(Scone)從afternoon_tea字典中刪除,不然就要被爆料是超級黑店了,你不想拿到一堆一星評價啊。

馬上使用del陳述句,刪掉Scone這個項目:

>>> del afternoon_tea['Scone']
>>> afternoon_tea

執行程式碼,太好了,司康已經刪除。

{'Muffin': 49, 'Biscuit': 20, 'croissant': 38, 'waffle': 180, 'crepe': 160, 'macaron': 200}

使用del陳述句,你只需要輸入del,接著打上afternoon_tea['Scone']就可以了。

使用pop()方法刪除項目

除了用del陳述句來刪除項目,你還可以使用pop()方法刪除項目,這個方法還會回傳刪除的項目中,所對應的值給你看。

時空倒轉,回到司康還沒刪除的時間點,你決定使用pop()刪除項目:

>>> afternoon_tea.pop('Scone')

執行程式碼,Python會回傳鍵'Scone'所對應的值999999

999999

確認一下afternoon_tea字典是否已經刪除司康與999999那個項目:

>>> afternoon_tea

執行程式碼,刪除成功!

{'Muffin': 49, 'Biscuit': 20, 'croissant': 38, 'waffle': 180, 'crepe': 160, 'macaron': 200}

使用clear()方法刪除所有的項目,字典清空

如果你覺得你建立的字典讓你心煩意亂,你可以使用clear()方法把全部的項目刪除,留下一個空字典。

afternoon_tea字典讓你看了心煩,你決定打掉重做。

>>> afternoon_tea.clear()
>>> afternoon_tea
{}

只剩一個空字典了。

用len()函式計算字典中的項目數量

len()函式可以用來取得Python字典項目的數量,讓你算算你的咖啡廳總共有幾種餐點。

在你刪除afternoon_tea字典前,先使用len()函式,看看刪掉全部後,要再重新做出幾個項目:

>>> afternoon_tea = {'Muffin': 49, 'Biscuit': 20, 'croissant': 38, 'waffle': 180, 'crepe': 160, 'macaron': 200}
>>> len(afternoon_tea)

執行程式碼後:

6

總共有6個餐點,好像不會太多,所以你就用clear()全刪了。

Python書籍推薦

本文介紹了Python字典的基礎知識,並告訴你如何建立字典,建立好字典後可以怎麼操作。

是不是迫不急待想練習Python字典的操作呢?如果無從著手,推薦你使用《Python 自動化的樂趣(第2版)》這本書來練習,書中會教你利用Python字典做出一個井字遊戲,還會設定一個遊戲的情境,讓你用字典練習列出你的遊戲背包裡有多少東西,並且計算出總數。

如果你對於巢狀字典的概念很混亂,你可以閱讀《Python程式設計的樂趣(第2版)》,這本書將向你展示字典中的串列,串列中的字典,還有字典中的字典,也會舉for迴圈的例子。

延伸閱讀:

在〈Python字典(dictionary)基礎與16種操作〉中有 2 則留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *