Python基礎程式設計(四)字典 當索引不好用時

2021-06-22 01:10:25 字數 3983 閱讀 1458

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