《python3程式開發指南》
對映:鍵-值資料項的組合
python3支援兩種無序的對映型別:內建的dict型別、標準庫中的collections.defaultdict型別。
python3.1中引入了有序的對映型別:collections.ordereddict,與內建dict有相同的方法和屬性,但在儲存資料時以插入順序進行。
鍵:可雜湊運算的物件的物件引用;值:任意型別物件的物件引用
使用字典字面值建立>>> d1=dict()
>>> d1
使用關鍵字引數建立
>>> d2=dict(id=1948,name="washer",size=3)
從序列中建立,d4中的zip()函式返回乙個元組列表
>>> d3=dict([("id",1948),("name","washer"),("size",3)])
>>> d4=dict(zip(("id","name","dize"),(1948,"washer",3)))
從字典字面值建立
>>> d5=
迭代:
>>> for item in d1.items():print item[0],item[1]
id 1948
name washer
size 3
第二種方法
>>> for key,value in d1.items():
print key,value
id 1948
name washer
size 3
根據字典的值進行迭代
>>> for key in d1.keys():print key
>>> for key in d1:
print key
>>> for value in d1.values():
print value
字典方法
d.clear()
d.copy()
淺拷貝
d.fromkeys(s,v)
返回乙個dict,該字典的鍵為序列s中的項,值為none或v中的值(若給定了引數v)
d.get(k)
返回 鍵k對應的value,如果k不存在,返回none
d.get(k,v)
返回 鍵k對應的value,如果k不存在,返回v
d.items()
返回d中的(key,value)對
d.keys()
d.pop(k)
返回k對應的value,並刪除鍵為k的項,若沒有產生keyerror異常
d.pop(k,v)
返回k對應的value,並刪除鍵為k的項,若沒有則返回v
d.popitem()
返回並刪除dict中乙個任意的(key,value),如果d為空產生keyerror異常
d.setdefault(k,v)
同d.get()
不同處:如果k沒有在d 中,插入乙個鍵為k,值為none或v(若給定了引數v)
d.update(a)
a中未包含在d中的(key,value)新增到d中
同時在a和d中的鍵,用a中的value替換d中的value
a:可以是字典、可以使(key,value)對的乙個iterable,或關鍵字引數
d.values()
返回d中所有值
字典內涵
兩種語法格式:
[keyexpression:valueexpression for key, value in iterable]
[keyexpression:valueexpression for key, value in iterable if condition]
例項一:如果使用字典內涵建立字典,鍵為當前目錄中檔案的檔名,值為以位元組計數的檔案大小
os.listdir()返回傳遞給函式的路徑中包含的檔案與目錄列表但列表中不會包含"."或".."os.path.getsize()函式返回給定檔案的大小(以位元組計數)
>>> file_sizes =
>>> file_sizes =
建立反轉的目錄,比如給定字典d,生成乙個新字典,新字典的鍵是d的值,值是d的鍵
>>> inverted_d =
預設字典----collections.defaultdict
與普通字典的區別:預設字典可以對遺失的鍵進行處理。其他方面與普通字典一樣
例如,對於某個字典d,其中不包含鍵為m的項,x=d[m]會產生異常。若d為預設字典,那麼如果鍵為m的項不在字典中,就會建立乙個新項,其鍵為m,值預設,並返回新建的項。
建立預設字典:建立預設字典時,可以傳入乙個工廠函式,呼叫工廠函式時,將返回某種特定型別的物件。對預設字典呼叫工廠函式時,將為遺失的鍵建立預設值。
python所有的內建型別都可以用作工廠函式,比如,資料型別str可以作為函式str()進行呼叫,將返回乙個空字串物件
>>> import collections>>> words = collections.defaultdict(int)
>>> x = words["xyz"]
>>> x
0>>> words
defaultdict(, )
>>>
有序字典---collections.ordereddict
以資料項插入的順序進行儲存,python3.1引入
有序字典在建立時,如果接收了無序的dict或關鍵字引數,則資料項順序將是任意的。原因:在底層,python使用無序的dict傳遞關鍵字引數。使用update()方法時也有類似效果。
但如果在建立時,傳遞鍵-值對構成的元組列表,則順序得以保留。
建立有序字典>>> import collections
>>> d = collections.ordereddict([('z',4),('e',1),('a',4)])
>>> d
ordereddict([('z', 4), ('e', 1), ('a', 4)])
遞增式建立更常見
>>> tasks = collections.ordereddict()
>>> tasks[1] = "jim"
>>> tasks[2] = "jan"
>>> tasks[3] = "tom"
>>> tasks
ordereddict([(1, 'jim'), (2, 'jan'), (3, 'tom')])
生成排序字典可通過 d = collections.ordereddict(sorted(d.items()))來實現,但對於重新加入新的項再排序,則需要一定的開銷。
python筆記 字典
知識點1.列表是有序的集合,而字典是無序的集合。2.字典用 列表用,而元組用 3.字典用鍵 key 值 value 對儲存資料,其中鍵必須是唯一的。xiaoming dict print xiaoming dict name 取值 xiaoming dict age 18 修改 xiaoming d...
筆記 python字典
字典是另一種可變容器模型,且可儲存任意型別物件。格式如下 d 鍵必須是唯一的,但值則不必。字典值可以是任何的 python 物件,既可以是標準的物件,也可以是使用者定義的,但鍵不行。值可以取任何資料型別,但鍵必須是不可變的,如字串,數字。字典的建立 注意兩種建立方式 訪問 修改 刪除如下.dict1...
python學習筆記 字典
方法一 dict1 dict2 dict1,dict2 方法二 從python 2.2 版本起,可以使用乙個工廠方法,傳入乙個元素是列表的元組作為引數 fdict dict x 1 y 2 fdict 方法三 從python 2.3 版本起,可以用乙個很方便的內建方法fromkeys 來建立乙個 預...