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 共享資料庫 資料庫整合 即消費者直接訪問資料庫 的缺點...