魚c筆記 Python字典(一)

2021-08-15 06:48:38 字數 2726 閱讀 8519

部分內容來自:

python的字典和真正的英文本典比較,python的字典將單詞稱為key(鍵),單詞對應的含義稱為value(值)

python的字典在很多地方也稱為hash(雜湊),有些地方也稱為關係陣列。

字典是python唯一的對映型別。

對映型別和序列型別的區別:

序列型別以陣列的形式進行儲存,通過索引的方式來取得相應位置的值。索引值和對應儲存的資料毫無關係。

下面的程式間接的實現了由中文查詢英文的方式:

>>> chinese = [1, 2, 3, 4]

>>> english = ['one', 'two', 'three', 'four']

>>> print("4對應的英文是:", english[chinese.index(4)])

4對應的英文是: four

但顯而易見的效率不是很高,不符合python簡潔的特點,因此創造出了字典這一資料型別

>>> dict1 =    #冒號前是鍵,冒號後是值

>>> dict1

>>> print("4對應的英文是:", dict1[4]) #dict1[4]通過鍵訪問值

4對應的英文是: four

建立乙個空的字典:用空的大括號括起來

>>> dict2 = {}

>>> dict2

{}

如這些例子所示,在python中建立字典要使用花括號和以冒號分隔的鍵-值組合。

如果沒有提供鍵值組合,那麼會建立乙個空的字典。

使用乙個鍵值組合,就會建立具有乙個元素的字典,以此類推,直至你需要的任何規模。

與任何容器型別一樣,可以使用內建的len方法查明集合中的元素數量。

鍵並不限制為整數;它可以是任何不易變的資料型別,包括integer, float, tuple或string

因為list是易變的,所以它不能作為字典中的鍵。但是字典中的值可以是任何資料型別的。

也可以用dict()函式建立字典

>>> dict3 = dict(((1, 'one'), (2, 'two'), (3, 'three')))   #其中(1, 'one')是一種對映關係,也可以用列表

>>> dict3

>>> l = [0, 1, 2 , 3] #建立 dictionary 需要鍵值和資料值,沒有匹配的鍵-資料值對,因此失敗

>>> d = dict(l)

traceback (most recent call last):

file "", line 1, in d = dict(l)

typeerror: cannot convert dictionary update sequence element #0 to a sequence

>>> l = [(0, 'zero'), (1, 'one'), (2, 'two'), (3, 'three')] #使用乙個 list,其中的每個元素都是乙個 tuple

>>> d = dict(l)

>>> d

>>> l = [[0, 'zero'], [1, 'one'], [2, 'two'], [3, 'three']] #也使用乙個 list,但是其中的每個元素是另乙個 list

>>> d

>>> d = dict(l)

>>> d

>>> d = dict(zero=0, one=1, two=2, three=3) #zero不用寫成字串的形式,直接寫出名字就行

>>> d

>>> d = dict('zero'=0, 'one'=1, 'two'=2, 'three'=3)

syntaxerror: keyword can't be an expression

>>> d = dict(0=zero, 1=one, 2=two, 3=three) #採用這種方式時對於鍵不能使用數字,否則會導致丟擲乙個異常

syntaxerror: keyword can't be an expression

直接給字典的鍵賦值:如果鍵本身在字典中存在,則改寫對應鍵的值;如果不存在,則建立乙個新的鍵並為它賦值

>>> dict1 = 

>>> dict1

>>> dict1[1] = 'yi'

>>> dict1

>>> dict1[3] = 'three'

>>> dict1

首先,修改資料是很簡單的:將新的值分配給適當的鍵。

最後,刪除對映的辦法是使用del操作符以及想要從容器中刪除的鍵。

>>> d  = dict(zero=0, one=1, two=2, three=3)

>>> d

>>> d['zero']

0

從字典中獲取資料值的過程幾乎和從任何容器型別中獲取資料完全一樣:在容器名後面的方括號中放上鍵值。

當然,字典可以具有非數字的鍵值,因為在字典中次序是不重要的(字典中資料的次序是任意的),所以可以對其他容器資料型別使用的片段功能,對於字典是不可用的,試圖使用或者試圖從不存在的鍵訪問資料就會丟擲異常,指出相關的錯誤。

ps.為乙個不存在鍵賦值不會報錯(這也是和序列的區別之一)

魚c筆記 Python工廠函式

在python2.2之前,類和型別是分開的。類是屬性和方法的封裝,型別就是像整型 浮點型和字串這些。但是在python2.2之後,作者試圖對這兩個東西進行統一。他的做法是把int,float,string,list,tuple等這些bif 內建函式 統統轉換為工廠函式。type len type d...

魚c筆記 Python物件導向程式設計

ooa 物件導向分析 oop 物件導向程式設計 ood 物件導向設計 關於self python的self相當於c 的this指標。由同乙個類可以生成無數的物件,當乙個物件的方法被呼叫的時候,物件會將自身作為第乙個引數傳遞給self引數,接受到這個self引數時,python就知道是哪個物件在呼叫方...

python 魚c 魚C python之列表

一 列表 乙個打了激素的陣列 1.介紹列表 c語言裡面的陣列 是把同一種型別的資料放在乙個集合裡面 但是python沒有型別的概念,所以python 引入了 列表,各種資料都可以放進去,如 整數 浮點數 字串 物件。2.建立列表 3種方式 普通列表 混合列表 空列表 exp number 飛翼 甲魚...