字典是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 isok』>>> 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...