第4章 當索引行不通時(字典 對映)

2021-10-12 17:27:18 字數 4697 閱讀 7278

1. 字典由鍵及其相應的值組成,這種鍵值對稱為項(item),鍵必須是獨一無二的。空字典:{}

phone =
2. 函式dict

從其他對映(如其他字典)或鍵-值對序列建立字典。

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

>>>d = dict(items)

>>>d

>>>d['name']

'gumby'

使用關鍵字實參來呼叫dict函式

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

>>>d

像函式list、tuple和str一樣,如果呼叫這個函式時沒有提供任何實參,將返回乙個空字典。

>>>d= dict()

>>>d

{}

3. 基本的字典操作

len(d) 返回字典d包含的項(鍵-值對)數;

d[k]返回與鍵k相關聯的值;

d[k] = v將值關聯到鍵k;

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

k in d檢查字典d是否包含鍵為k的項;

>>>x = 

>>>x[42] = 'foobar'

traceback (most recent call last):

file "", line 1, in indexerror: list assignment index out of range

>>>x = [none] * 43

>>>x[42] = 'foobar'

>>>x = {}

>>>x[42] = 'foobar'

>>>x

4. 將字串格式設定功能用於字典 format_map

>>>phonebook = 

>>>phonebook

"cecil's phone number is .".format_map(phonebook)

"cecil's phone number is 3258."

>>>template = '''

'''>>>data =

>>>print(template.format_map(data))

my home page

welcome to my home page!

5. 字典方法

1)clear

刪除所有的字典項,就地執行 x = {}與x.clear()的區別

>>>x = {}

>>>y = x

>>>x['key'] = 'value'

>>>y

>>>x = {}

>>>y

>>>x = {}

>>>y = x

>>>x['key'] = 'value'

>>>y

>>>x.clear()

>>>y

{}

2)copy 淺複製和深複製

淺複製:使用copy();當替換副本中的值時,原件不受影響;當修改副本中的值時,原件也將發生變化;

個人見解:可能類似c++中的淺複製,username的值為字串本身是乙個值型別,x和y維持不同的實體;而machines的值為列表類似於引用型別,x和y的machines指向同乙個例項;而深複製可能類似於c++中的在新拷貝出dc中先新建乙個列表,再將d中列表中的值複製過去,這樣d和dc的列表就是兩個不同的物件,而不是指向乙個相同的列表物件。

>>>x = 

>>>y = x.copy()

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

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

>>>y

>>>x

>>>from copy import deepcopy

>>>d = {}

>>>d['name'] = ['alfred', 'bertrand']

>>>c = d.copy()

>>>dc = deepcopy(d)

>>>c

>>>dc

3)fromkeys

建立乙個新字典,其中包含指定的鍵,且每個鍵對應的值都為none。(該例子首先建立了乙個空字典,在對其呼叫方法fromkeys來建立另乙個字典)

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

使用dict呼叫方法fromkeys(dict是所有字典所屬的型別)

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

指定值的預設值 

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

4)get

嘗試獲得值,失敗時返回none而不是報錯;還可以使用兩個引數來指定獲取失敗時返回的值

>>>d = {}

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

traceback (most recent call last):

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

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

none

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

'n/a'

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

>>>d.get('name')

'eric'

5)item

返回乙個包含所有字典項的列表,其中每個元素都為(key, value)的形式。字典項在列表中的排序順序不確定。

返回值屬於一種名為字典檢視的特殊型別,字典檢視可用於迭代。

>>>d = 

>>>d.items()

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

>>>it = d.items()

>>>len(it)

3>>>('spam', 0) in it

true

>>>d['spam'] = 1

>>>('spam', 0) in it

false

>>>d['spam'] = 0

>>>('spam', 0) in it

true

>>>list(d.items())

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

6)keys

返回乙個字典檢視,包含指定字典中的鍵

>>>d.keys()

dict_keys(['title', 'url', 'spam'])

7)pop

獲取與指定鍵相關聯的值,並將該鍵-值對從字典中刪除。

>>>d = 

>>>d.pop('x')

1>>>d

8)popitem

隨機地彈出乙個字典項

>>>d = 

>>>d.popitem()

('title', 'python web site')

>>>d

9)setdefault

獲取指定鍵(引數1)的值,獲取失敗時在字典中新增鍵值對(引數1:引數2),引數2預設為none

>>>d = {}

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

'n/a'

>>>d

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

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

'gumby'

>>>d

>>>d = {}

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

none

>>>d

10)update

使用乙個字典中的項來更新另乙個字典;如果當前字典中不包含鍵相同的項就新增,如果當前字典中包含鍵相同的項就替換它。可以使用dict呼叫方法update。

>>>d = 

>>>x =

>>>d.update(x)

>>>d

11. values

返回乙個由字典中的值組成的字典檢視(與keys方法不同的是,由於值不唯一,所以返回的檢視可能包含重複的值)

>>>d = {}

>>>d[1] = 1

>>>d[2] = 2

>>>d[3] = 3

>>>d[4] = 1

>>>d.values()

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

第4章 當索引行不通時

4.1 字典的用途 4.2 建立和使用字典 phonebook phonebook alice 2341 4.2.1 函式dist 函式從其他對映或鍵值對序列建立字典 items name gumby age 42 d dict items d d dict name gumby age 42 d ...

第四章 字典和集合(當索引行不通時)

一 字典 1.建立和使用字典 phonebook 字典由鍵及其相應的值組成,這種鍵 值對稱為項 item 在上面例子中,鍵為名字,值為號碼,每個鍵與值間都用冒號分隔,項之間用逗號隔開,整個字典在花括號中。空子典 沒有任何項 用兩個花括號表示,即 字典是通過名稱來訪問其各個值的資料結構,這種資料結構稱...

第4章 整合

4.1 尋找理想的整合技術的指導原則 避免服務方修改乙個欄位就引起消費方的修改 保證api的技術無關性 消費方應該能夠很簡單的使用服務方提供的服務,提供客戶端庫的做法會增加耦合。隱藏內部實現細節 4.2 musiccorp建立使用者介面 4.3 共享資料庫 資料庫整合 即消費者直接訪問資料庫 的缺點...