字典是python中唯一內建的對映型別。字典中的值並沒有特殊的結構,但是都儲存在乙個特定的鍵(key)裡。鍵可以是數字、字串甚至是元組。
字典可以通過下面的方式建立:
phonebook =
可以用dict函式,通過其他對映(比如其他字典)或者(鍵、值)這樣的序列對建立字典。
>>>items = [('name','gubmy'),('age',42)]
>>>d = dict(items)
>>>d
>>>d['name']
'gubmy'
dict函式也可以通過關鍵字引數來建立字典:
>>>d = dist(name='gubmy',age=42)
>>>d
len(d)返回d中項(鍵-值對)的數量;
d[k]返回關聯到鍵k上的值;
d[k]=v將值v關聯到鍵k上;
del d[k]刪除鍵為k的項;
k in d檢查d中是否有含有鍵為k的項。
字典和列表的區別:
鍵型別:字典的鍵不一定為整型資料,也可能是其他不可變的型別。
自動新增:即使那個鍵起初在字典中並不存在,也可以為它分配乙個值,這樣子點就會建立新的項。
成員資格:表示式k in d(d為字典)查詢的是鍵,而不是值。表示式v in l(l為列表)則用來查詢值,而不是索引。
>>>phonebook
>>>"cecil's phone number is %(cecil)s."%phonebook
"cecil's phone number is 3258."
1. clear
clear方法清除字典中所有的項。
2. copy
copy方法返回的是乙個具有相同鍵-值對的新字典(這個方法實現的是淺複製,因為值本身就是相同的,而不是副本)。
>>> x =
>>> y = x.copy()
>>> y['username'] = 'mlh'
>>> y['machines'].remove('bar')
>>> y
>>> x
可以看到,當在副本中替換值的時候,原字典不受影響,但是,如果修改了某個值(原地修改,而不是替換),原始的字典也會改變,因為同樣的值也儲存在原字典中(就像上面例子裡的「machines」列表一樣)。
避免這個問題的一種方法是使用深複製,複製其包含所有的值。可以使用copy模組的deecopy函式來完成操作:
>>>from copy import deecopy
>>>d= {}
>>>d['names'] = ['alfred','bertrand']
>>>c = d.copy()
>>>dc = deepcopy(d)
>>>c
>>>dc
3. fromkeys
fromkeys方法使用給定的鍵建立新的字典,每個鍵預設對應的值為none。
>>>{}.fromkeys(['name','age'])
>>>dict.fromkeys(['name','age'])
如果不想使用none作為預設值,也可以自己提供預設值:
>>>dict.fromkeys(['name','age'],『unknown』)
4. get
get方法是個更寬鬆的訪問字典項的方法。
get不會在試圖訪問字典中不存在的項的時候出錯:
>>>d = {}
>>>print d.get('name')
none
當使用get訪問乙個不存在的鍵時,沒有任何異常,而得到了none值。還可以自己定義「預設」值,替換none。
5. has_key
has_key方法可以檢查字典中是否含有給出的鍵。代表式d.has_key(k)相當於表示式k in d。(python3.0中不包含這個函式)
6. items和iteritems
items方法將所有的字典項以列表方式返回,這些列表項中的每一項都來自於(鍵,值)。但是返回項在返回時並沒有特殊的順序。
>>>d =
>>>d.items()
[('url','''),('spam',0),('title','python web site')]
iteritems方法的作用大致相同,但是會返回乙個迭代器物件而不是列表。
>>>it = d.iteritems()
>>>it
>>>list(it)#convert the iterator to a list
[('url','''),('spam',0),('title','python web site')]
7. keys和iterkeys
keys方法將字典中的鍵以列表的形式返回,二iterkeys則返回針對鍵的迭代器。
(關於迭代器的知識,將在第9章詳細講)
8. pop
pop方法用來獲得對應於給定鍵的值,然後將這個鍵-值對從字典中移除。
>>>d =
>>>d.pop('x')
1>>>d
9. popitem
popitem方法類似於list.pop,後者會彈出列表的最後乙個元素。但不同的是,popitem彈出的是隨機的項,因為字典並沒有「最後的元素」或者其他有關順序的概念。若想乙個接乙個的移除並處理項,這個方法就非常有效了(因為不用首先獲取鍵的列表)。
>>>d
>>>d.popitem()
('url':''')
>>>d
10. setdefault
setdefault方法在某種程度上類似於get方法,就是能夠獲取與給定鍵值相關聯的值,除此之外,setdefault還能在字典中不含有給定鍵的情況下設定相應的鍵值。
>>>d = {}
>>>d.setdefault('name','n/a')
'n/a'
>>>d
>>>d.['name'] = 'gumby'
>>>d.setdefault('name','n/a')
'gumby'
>>>d
可以看出,當鍵值不存在的時候,setdefault返回預設值並且相應的更新字典。如果鍵值存在,那麼就返回與其對應的值,但不改變字典。預設值是可選的,這點和get一樣,如果不設定,會預設使用none(即上例中的『n/a』)。
11. update
update方法可以利用乙個字典項更新另外乙個字典:
>>> d =
>>> x =
>>> d.update(x)
>>> d
提供的字典中的項會被新增到舊的寶典中,若有相同的鍵則會進行覆蓋。
update方法可以使用與呼叫dict函式(或者型別建構函式)同樣的方式進行呼叫。update可以和對映、擁有(鍵,值)對的佇列(或者其他可迭代的物件)以及關鍵字引數一起呼叫。
12. values和itervalues
value方法以列表的形式返回字典中的值(iitervalues返回值的迭代器)。與返回鍵的了列表不同的是,返回值的列表中可以包含重複的元素:
>>>d = {}
>>>d[1] = 1
>>>d[2] = 2
>>>d[3] = 3
>>>d[4] = 1
>>>d.values()
[1,2,3,1]
python學習(四) 字典 當索引不好用時
第四章 字典 當索引不好用時 4.1 字典的使用 字典的適用場景 表示乙個遊戲棋盤的狀態,每個鍵都是由座標值組成的元組 儲存檔案修改時間,用檔名作為鍵 4.2 建立和使用字典 如下的 鍵 值 對就是字典 phonebook phonebook alice 2341 4.2.1 dict函式 可以用d...
Python學習筆記 四 字典 當索引不好用時
4.1 字典的使用 類似於c 中的map.4.2 建立和使用字典 字典可以通過下面的方式建立 phonebook 4,2,1 dict 函式 可以同dict函式,通過其他對映 比如其他字典 或者 鍵,值 這樣的序列對建立字典 items name gumby age 42 d dict items ...
Python學習四 字典
在python中,字典是一系列鍵 值對。每個鍵都與乙個值相關聯,你可以使用鍵來訪問與之相關的值。事實上,可將任何python物件用作字典中的值,例如數字 字串 列表 甚至是字典。例項 alien print alien age 輸出17 user 0 for key,value in user 0....