Python學習筆記之對映型別字典(dict)

2021-06-09 00:23:41 字數 2798 閱讀 6821

建立字典

工廠方法dict()

>>> fdict = dict((['x', 1], ['y', 2]))  #使用元組,其中每個元素為列表

>>> fdict

>>> fdict = dict([('x', 1), ('y', 2)]) #使用列表,其中每個元素為元組

>>> fdict

使用內建方法fromkeys()建立乙個「預設」字典,字典中元素具有相同的值(預設為none)

>>> fdict = {}.fromkeys(('x', 'y'), 1)

>>> fdict

>>> fdict = dict.fromkeys(('x', 'y'), 1) #dict為字典關鍵字

>>> fdict

如何訪問字典中的值

要想遍歷乙個字典,只需迴圈檢視它的鍵

>>> for key in fdict.keys():

print 'key=%s, value=%s' %(key, fdict[key])

也可以不再使用keys()

>>> for key in fdict:

print 'key=%s, value=%s' %(key, fdict[key])

訪問字典中的乙個資料元素,它的鍵在字典中不存在時,會產生keyerror異常。

檢查字典中是否有某個鍵,方法has_key(), in或not in操作符。(*has_key()已棄用)

更新字典

>>>fdict['x'] = 10

刪除字典元素和字典

>>>del fdict['x']     #刪除鍵為』x'的條目

>>>fdict.clear()     #刪除fdict所有的條目,fdict清空

>>>del fdict         #刪除整個fdict字典

>>>fdict.pop('x')     #刪除並返回鍵為『x'的條目

字典操作型別操作符

*避免使用內建物件名字作為變數的識別符號(如:dict, list, file, bool, str, input, len)

*字典可以和所有的標準型別操作符一起工作,但不支援拼接(concatenation)和重複(repetition),這些操作對序列才有意義。

>>> t = fdict + fdict2  #typeerror

traceback (most recent call last):

file "", line 1, in

t = fdict + fdict2

typeerror: unsupported operand type(s) for +: 'dict' and 'dict'

標準型別函式

type()

>>> type(fdict)

>>> type(dict)

str()

>>> str(fdict) ""

>>> fdict

cmp()

字典通過這樣的演算法來比較的:比較字典的長度->比較字典的鍵->比較字典的值->exact match,字典相等

對映型別的相關函式

dict([container])

*工廠函式被用來建立字典,如不提供引數,會生成空字典

*當容器型別物件作為乙個引數傳遞給方法dict()時,引數必須是可迭代的,如乙個序列,或乙個迭代器,或乙個支援迭代的物件,每個迭代的元素必須成堆出現,在每個值對中,第乙個元素是字典的鍵,第二個元素是字典的值。

>>> dict(zip(('x', 'y'), (1,2)))     

>>> dict((('x', 1), ('y',2)))

>>> dict([['x', 1], ['y',2]])

>>> dict([('xyz'[i], i) for i in range(0,3)])

>>> dict(x=1,y=2)     #關鍵字引數

>>>dict(dict2)     #字典引數,使用字典的內建方法copy會更快。

hash(obj)

返回物件的雜湊值,可判斷某個物件是否可以作為乙個字典的鍵(hash()返回值整數,無錯誤或異常)。

將非可雜湊型別作為引數傳遞給hash()方法,會產生typeerror錯誤,作為鍵給字典賦值時同樣會出錯。

字典型別相關方法

setdefault(key, default=none)

>>> fdict = dict(x=1,y=2)

>>> fdict

>>> fdict.setdefault('x',100)

1>>> fdict

>>> fdict.setdefault('z', 100)

100>>> fdict

iteritems(), iterkeys(), itervalues()

其對應方法items(), keys(), values()的返回值都是列表,如資料集很大會導致很難處理。

iter()返回惰性賦值的迭代器,所以節省記憶體,將來這些方法會返回強大的物件。

*所有不可變的型別都是可雜湊的,所以都可以作為字典的鍵

*對於數字,值相等的數字表示相同的鍵,比如整數1和浮點數1.0雜湊值相同,是相同的鍵

*也有一些可變物件是可雜湊的,可以做字典的鍵,比如實現__hash__()特殊方法的類。

*用元組做有效的鍵,元組中必須只包括數字,字串等不可變引數

python對映型別

python中的字典可以通過大括號 建立,建立模式如下 我們之前講解集合型別時說過,集合也可以通過大括號和賦值語句的形式建立,因此字典也具有和集合類似的性質 鍵值對之間無序且不能重複,簡單來說可以把字典型別看成是元素是鍵值對的集合。一般來說字典中的鍵值對訪問模式如下 採用中括號進行訪問 值 字典變數...

Python學習筆記之資料型別

計算機簡而言之為進行計算的機器。計算機的所有功能的本質是計算功能,無論是網路資訊發布還是醫院的計費系統,其本質都是計算。而計算機語言則是人類與計算機互動的語言,人類通過計算機語言告訴計算機做什麼事情。python自然也不例外,它實際上就是人類與計算機溝通的語言或者說工具。然而,python天生又是為...

python學習筆記之資料型別

1 列表推導式 列表推導式可從乙個資料序列構建另乙個新的資料序列結構體 基本格式 variable out exp res for out exp in input list if out cond out exp res 列表生成元素表示式,可以是有返回值的函式。for out exp in in...