Python隨筆1 字典

2021-06-26 12:59:23 字數 4380 閱讀 9485

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

一、建立和使用字典

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

>>> phonebook =

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

1. dict 函式

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

>>> items = [('name', 'gumby'), ('age', 42)]  

>>> d = dict(items)

>>> d

dict 函式也可以通過關鍵字引數來建立字典。

>>> d = dict(name='gumby', age=42)  

>>> d

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)鍵型別:字典的鍵不一定為整型資料(但也可能是),也可能是其他不可變型別,比如浮點型(實型)、字串或者元組。

(2)自動新增:即使那個鍵起初在字典中並不存在,也可以為它分配乙個值,這樣字典就會建立新的項。

(3)成員資格:表示式 k in d (d 為字典) 查詢的是鍵,而不是值。

3. 字典的格式化字串

在每個轉換(conversion specifier)中的 % 字元後面,可以加上用圓括號括起來的鍵,後面再跟上其他說明元素。

>>> phonebook  

>>> "cecil's phone number is %(cecil)s." % phonebook

"cecil's phone number is 3258."

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

>>> template = '''''...... ...  

... %(text)s

... '''

>>> data =

>>> print(template % data)

welcome to my home page!

4. 字典方法

(1) clear

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

>>> d  

>>> retured_value = d.clear()

>>> d

{}

>>> retured_value

>>> print(retured_value)

none

(2) copy

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

>>> x =   

>>> y = x.copy()

>>> y['username'] = 'mlh'

>>> y['machines'].remove('bar')

>>> y

>>> x

上面,當在 y 中替換值的時候,x 不受影響,但是,如果修改了某個值(原地修改,而不是替換),x 也會改變,因為同樣的值也儲存在原字典中。

避免這個問題的一種方法就是使用深複製( deep copy),複製其包含所有的值。可以使用 copy 模組的 deepcopy 函式來完成操作。

(3)fromkeys

fromkeys 方法使用給定的鍵建立新的字典,每個鍵預設對應的值為 none。

>>> {}.fromkeys(['name', 'age'])  

也可以直接在所有字典的型別 dict 上面呼叫方法。

>>> dict.fromkeys(['name', 'age'])  

如果不想使用none作為預設值,也可以自己提供預設值。

>>> dict.fromkeys(['name', 'age'], '(unknown)')  

(4)get

當使用 get 訪問乙個不存在的鍵時,沒有任何異常,而得到了 none 值。

>>> print(d['name'])  

traceback (most recent call last):

file "", line 1, in keyerror: 'name'

>>> print(d.get('name'))

none

還可以定義「預設」值,替換 none:

>>> d.get('name', 'n/a')  

'n/a'

如果鍵存在,get用起來就像普通的字典查詢一樣。

(5)items

items 方法將所有的字典項以dict_items 方式返回,這些列表項中的每一項都來自於(鍵,值)。

>>> d =   

>>> d

>>> d.items()

dict_items([('url', ''), ('title', 'python web site'), ('spam', 0)])

(6)keys

keys 方法將字典中的鍵以 dict_keys 形式返回。

(7)pop 

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

>>> d =   

>>> d.pop('x')

1 >>> d

(8)popitem

popitem 彈出隨機的項。

>>> d  

>>> d.popitem()

('url', '')

>>> d

(9)setdefault

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

>>> d = {}  

>>> d.setdefault('name', 'n/a')

'n/a'

>>> d

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

>>> d.setdefault('name', 'n/a')

'gumby'

>>> d

當鍵不存在的時候,setdefault 返回預設值並且相應地更新字典。如果鍵存在,那麼就返回與其相應的值,但不改變字典。

(10)update

update 方法可以利用乙個字典項更新另乙個字典。

>>> d =   

>>> x =

>>> d.update(x)

>>> d

提供的字典中的項會被新增到舊的字典中,若有相同的鍵則會進行覆蓋。

(11)values

values 方法以 dict_values 的形式返回字典中的值。

>>> d = {}  

>>> d[1] = 1

>>> d[2] = 2

>>> d[3] = 3

>>> d[4] = 4

>>> d.values()

dict_values([1, 2, 3, 4])

python學習1 字典

1.基本概念 常見的建立詞典的方法 dic print type dic 詞典和列表類似的地方,是包含有多個元素,每個元素以逗號分隔。但詞典的元素包含有兩部分,鍵和值,常見的是以字串來表示鍵,也可以使用數字或者真值來表示鍵 不可變的物件可以作為鍵 值可以是任意物件。鍵和值兩者一一對應。實際上,列表的...

python3字典遍歷 python3字典遍歷

python版本 python3.7 info infog.get name 得到字典info中name的值 info.keys 得到字典info中所有的鍵,結果是乙個物件 dict keys name age 需要注意在python2中該操作得到的是乙個列表 遍歷key for temp in i...

python學習筆記(五) 字典(1)

上集回顧 python學習筆記 四 if語句 python學習筆記 三 列表 2 python學習筆記 二 列表 1 python學習筆記 一 hello world 變數 字串 數字 禪 student print student age print student name 字典是一系列鍵 值對...