Python字典 筆記

2022-07-22 17:36:16 字數 3569 閱讀 6182

《python3程式開發指南》

對映:鍵-值資料項的組合

python3支援兩種無序的對映型別:內建的dict型別、標準庫中的collections.defaultdict型別。

python3.1中引入了有序的對映型別:collections.ordereddict,與內建dict有相同的方法和屬性,但在儲存資料時以插入順序進行。

鍵:可雜湊運算的物件的物件引用;值:任意型別物件的物件引用

使用字典字面值建立

>>> d1=dict()

>>> d1

使用關鍵字引數建立

>>> d2=dict(id=1948,name="washer",size=3)

從序列中建立,d4中的zip()函式返回乙個元組列表

>>> d3=dict([("id",1948),("name","washer"),("size",3)])

>>> d4=dict(zip(("id","name","dize"),(1948,"washer",3)))

從字典字面值建立

>>> d5=

迭代:

>>> for item in d1.items():

print item[0],item[1]

id 1948

name washer

size 3

第二種方法

>>> for key,value in d1.items():

print key,value

id 1948

name washer

size 3

根據字典的值進行迭代

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

print key

>>> for key in d1:

print key

>>> for value in d1.values():

print value

字典方法

d.clear()

d.copy()

淺拷貝 

d.fromkeys(s,v)

返回乙個dict,該字典的鍵為序列s中的項,值為none或v中的值(若給定了引數v) 

d.get(k)

返回 鍵k對應的value,如果k不存在,返回none

d.get(k,v)

返回 鍵k對應的value,如果k不存在,返回v

d.items()

返回d中的(key,value)對 

d.keys()

d.pop(k)

返回k對應的value,並刪除鍵為k的項,若沒有產生keyerror異常 

d.pop(k,v)

返回k對應的value,並刪除鍵為k的項,若沒有則返回v

d.popitem()

返回並刪除dict中乙個任意的(key,value),如果d為空產生keyerror異常 

d.setdefault(k,v)

同d.get()

不同處:如果k沒有在d 中,插入乙個鍵為k,值為none或v(若給定了引數v)

d.update(a)

a中未包含在d中的(key,value)新增到d中

同時在a和d中的鍵,用a中的value替換d中的value

a:可以是字典、可以使(key,value)對的乙個iterable,或關鍵字引數 

d.values()

返回d中所有值 

字典內涵

兩種語法格式:

[keyexpression:valueexpression for key, value in iterable]

[keyexpression:valueexpression for key, value in iterable if condition]

例項一:如果使用字典內涵建立字典,鍵為當前目錄中檔案的檔名,值為以位元組計數的檔案大小

os.listdir()返回傳遞給函式的路徑中包含的檔案與目錄列表但列表中不會包含"."或".."

os.path.getsize()函式返回給定檔案的大小(以位元組計數)

>>> file_sizes =

>>> file_sizes =

建立反轉的目錄,比如給定字典d,生成乙個新字典,新字典的鍵是d的值,值是d的鍵

>>> inverted_d =

預設字典----collections.defaultdict

與普通字典的區別:預設字典可以對遺失的鍵進行處理。其他方面與普通字典一樣

例如,對於某個字典d,其中不包含鍵為m的項,x=d[m]會產生異常。若d為預設字典,那麼如果鍵為m的項不在字典中,就會建立乙個新項,其鍵為m,值預設,並返回新建的項。

建立預設字典:建立預設字典時,可以傳入乙個工廠函式,呼叫工廠函式時,將返回某種特定型別的物件。對預設字典呼叫工廠函式時,將為遺失的鍵建立預設值。

python所有的內建型別都可以用作工廠函式,比如,資料型別str可以作為函式str()進行呼叫,將返回乙個空字串物件

>>> import collections

>>> words = collections.defaultdict(int)

>>> x = words["xyz"]

>>> x

0>>> words

defaultdict(, )

>>>

有序字典---collections.ordereddict

以資料項插入的順序進行儲存,python3.1引入

有序字典在建立時,如果接收了無序的dict或關鍵字引數,則資料項順序將是任意的。原因:在底層,python使用無序的dict傳遞關鍵字引數。使用update()方法時也有類似效果。

但如果在建立時,傳遞鍵-值對構成的元組列表,則順序得以保留。

建立有序字典

>>> import collections

>>> d = collections.ordereddict([('z',4),('e',1),('a',4)])

>>> d

ordereddict([('z', 4), ('e', 1), ('a', 4)])

遞增式建立更常見

>>> tasks = collections.ordereddict()

>>> tasks[1] = "jim"

>>> tasks[2] = "jan"

>>> tasks[3] = "tom"

>>> tasks

ordereddict([(1, 'jim'), (2, 'jan'), (3, 'tom')])

生成排序字典可通過 d = collections.ordereddict(sorted(d.items()))來實現,但對於重新加入新的項再排序,則需要一定的開銷。

python筆記 字典

知識點1.列表是有序的集合,而字典是無序的集合。2.字典用 列表用,而元組用 3.字典用鍵 key 值 value 對儲存資料,其中鍵必須是唯一的。xiaoming dict print xiaoming dict name 取值 xiaoming dict age 18 修改 xiaoming d...

筆記 python字典

字典是另一種可變容器模型,且可儲存任意型別物件。格式如下 d 鍵必須是唯一的,但值則不必。字典值可以是任何的 python 物件,既可以是標準的物件,也可以是使用者定義的,但鍵不行。值可以取任何資料型別,但鍵必須是不可變的,如字串,數字。字典的建立 注意兩種建立方式 訪問 修改 刪除如下.dict1...

python學習筆記 字典

方法一 dict1 dict2 dict1,dict2 方法二 從python 2.2 版本起,可以使用乙個工廠方法,傳入乙個元素是列表的元組作為引數 fdict dict x 1 y 2 fdict 方法三 從python 2.3 版本起,可以用乙個很方便的內建方法fromkeys 來建立乙個 預...