python學習筆記之三 字典,當索引不好用時

2022-02-06 10:54:16 字數 4444 閱讀 2471

字典是python中唯一內建的對映型別。字典中的值並沒有特殊的順序,但是都儲存在乙個特定的鍵(key)裡。

鍵可以是數字,字串甚至是元組。

1. 建立和使用字典

字典可以通過下面的方式建立:

phonebook =

字典由多個鍵及與其對應的值構成的對組成。每個鍵和它的值之間用冒號(:)隔開,項之間用逗號(,)隔開,而整個字典是由一對大括號括起來。空字典:{}

1.1 dict函式

可以用dict函式通過對映(比如其他字典)或者(鍵,值)這樣的序列建立字典。

>>> items = [('

name

','gumby

'),('

age'.42)]

>>> d =dict(items)

>>>d

>>> d = dict(name='

gumby

','age

'=42)

>>>d

1.2 基本字典操作

(1)len(d)返回d中項(鍵-值對)的數量;

(2)d[k]返回關聯到k上的值;

(3)d[k]=v將值v關聯到鍵k上;

(4)del d[k]刪除鍵為k的項;

(5)k in d檢查d中是否有含鍵為k的項;

1.3 字典的格式化字串

字典格式化字串:在每個轉換說明符中的%字元後面,可以加上(用圓括號括起來的)鍵,後面再跟上其他說明元素。

只要所有給出的鍵都能在字典中找到,就可以獲得任意數量的轉換說明符。

>>> temple = 『the price of cake is $%(cake)s,the price of milk of cake is $%(milk)s. $%(cake)s is

ok』>>> price =

>>>print temple %price

『the price of cake

is $4,the price of milk of cake is $5. $4 is ok』

1.4 字典方法

1.4.1 clear

clear方法清除字典中所有的項,這是個原地操作,無返回值(或者說返回none)。

考慮下面2種情況:

a.將x關聯到乙個新的空字典來清空它,這對y一點影響都沒有,y還是關聯到原先的字典

>>> x ={}

>>> y =x

>>> x['

key'] = '

value

'>>>y

>>> x ={}

>>>y

b.如果想清空原始字典中所有的元素,必須用clear方法。

>>> x ={}

>>> y =x

>>> x['

key'] = '

value

'>>>y

>>>x.clear()

>>>y

{}

1.4.2 copy

copy方法返回乙個具有相同鍵-值對的新字典(這個方法實現的是淺複製,因為值本身是相同的,而不是副本)

在副本中替換值時,原始字典不受影響,但是如果修改了某個值,原始字典會改變。

>>> x = 

>>> y =x.copy()

>>> y['

a'] = 5

>>> y['

b'].remove(3)

>>>y

>>>x

避免這個問題的方法是使用深度複製-deepcopy(),複製其包含所有的值。

>>> x = 

>>> y =x.copy()

>>> z =x.deepcopy()

>>> x['

a>>>y

>>>z

1.4.3 fromkeys

fromkeys方法使用給定的鍵建立新的字典,每個鍵預設對應的值為none,可以直接在所有字典的型別dict上呼叫此方法。如果不想使用預設值,也可以自己提供值。

>>> {}.fromkeys(['

name

','age'])

>>>

>>> dict.fromkeys(['

name

','age

'],'

unknow')

1.4.4 get

get方法是個更寬鬆的訪問字典項的方法。當使用get訪問乙個不存在的鍵時,會得到none值。還可以自定義「預設」值,替換none。

>>> d ={}

>>> print d.get('

name')

none

>>> d.get("

name

",'n/a')

'n/a

'>>> d[''name] = '

eric

'>>> d.get('

name')

'eric

'

1.4.5 has_key

has_key方法可以檢查字典中是否含有給出的鍵。d.has_key(k)

>>> d ={}

>>> d.has_key('

name')

false

1.4.6 items和iteritems

items方法將所有的字典項以列表方式返回,但是列表中的每一項(鍵,值)返回時並沒有特殊的順序。iteritems方法的作用大致相同,但是會返回乙個迭代器物件而不是列表:

>>> d = 

>>>d.items[('

a',1),('

b',2),('

c',3)]

>>> it =d.iteritems()

>>>it

>>>list(it)[('

a',1),('

b',2),('

c',3)]

1.4.7 keys和iterkeys

keys方法將字典中的鍵以列表形式返回,而iterkeys則返回針對鍵的迭代器。

1.4.8 pop方法

pop方法用來獲得對應給定鍵的值,然後將這個鍵-值對從字典中移除。

>>> d = 

>>> d.pop('a'

)>>>d

1.4.9 popitem

popitem方法會彈出隨機項,並沒有順序的概念。若想乙個接乙個地移除並處理項,這個方法就非常有效了。

>>> d = 

>>>d.popitem()

>>>d

1.4.10 setdefault

setdefault方法在某種程度上類似於get方法,就是能夠獲得與給定鍵相關聯的值,還能在字典中不含有給定鍵的情況下設定相應的鍵值。

>>> d ={}

>>> d.setdefault('

name

','n/a')

'n/a

'>>>d

>>> d.setdefault('

name

',a)

'n/a

'

如上例,當鍵存在時,返回預設值(可選)並且相應地更新字典,如果鍵存在,那麼返回與其對應的值,但不改變字典。

1.4.11 update

update方法可以利用乙個字典項更新另乙個字典。提供的字典項會被新增到舊的字典中,若有相同的鍵則會進行覆蓋。

>>> d = 

>>> x =

>>>d.update(x)

>>>d

1.4.12 values和itervalues

values方法以列表的形式返回字典中的值(itervalues返回值的迭代器),與返回鍵的列表不同的是,返回值列表中可以包含重複的元素。

>>> d ={}

>>> d[1]=1

>>> d[2]=2

>>> d[3]=3

>>> d[4]=1

>>>d

>>>d.values()

[1, 2, 3, 1]

python學習筆記 三 字典

字典是一種對映型別的資料型別。辣麼什麼是對映呢?如果看過 資料結構與演算法 這一本書的小夥伴應該有印象 我也只是大學學習過,嘻嘻 對映 就是將兩個集合一 一對應起來,通過集合a的值,集合b有且只有乙個與之對應。字典是python中唯一的內建對映型別。字典以類似於下面的方式表示 phonebook 字...

Redis學習筆記(三) 字典

redis的字典使用雜湊表作為底層實現,乙個雜湊表中可以有多個雜湊表節點,而每個雜湊節點就儲存在字典中的乙個鍵值對。redis字典所用的雜湊表由disht結構定義。typedef struct dictht table 屬性是乙個陣列,陣列中的每個元素都是乙個指向dictentry結構的指標,每個d...

python基礎(三)字典

1.字典的用途 字典的名稱指出了這種資料結構的用途。普通圖書適合按從頭到尾的順序閱讀,如果你願意,可快速翻到任何一頁,這有點像python中的列表。字典 日常生活中的字典和python字典 旨在讓你能夠輕鬆地找到特定的單詞 鍵 以獲悉其定義 值 在很多情況下,使用字典都比使用列表更合適。下面是pyt...