標籤:預設值 更新 形式 val 索引值 不可變 get 特殊情況 地址
字典(dict)
dic是映射類型,由{}括起來的索引值對組成,在dict中key是唯一的.在儲存的時候,根據key來計算出唯一個記憶體位址. 然後將key-value儲存在這個地址中.這種演算法被稱為hash演算法,所以,在dict中儲存的key-value中的key必須是可hash的,如果你搞不懂什什麼是可雜湊, 暫時可以這樣記, 可以改變的都是不可雜湊的,可雜湊就意味著不可變. 這個是為了能準確的計算記憶體位址而規定的.
已知的可雜湊(不可變)的資料類型: int, str, tuple, bool
不可雜湊(可變)的資料類型: list, dict, set
文法:{key1: value1, key2: value2....}
dict儲存的資料不是按照我們添加進去的順序儲存的. 是按照hash表的順序儲存的. 而hash表不是連續的. 所以不能進行切片工作. 它只能通過key來擷取dict中的資料,在3.6之前.列印一個字典的結果中索引值對的順序都是錯亂的,3.6之後,索引值對的順序與輸入的順序一致,但是儲存的時候還是無序的
增加:
1.dict[一個字典中不存在的key0 = 值, 就會新增一個索引值對
2.setdefalt():設定預設值,當沒有為一個key設定value時,key等於這個預設value,通過方法1設定之後,value就會是設定的那個value
刪除:
1.pop(key):類似於list的pop,不過list使用的是下標,而dict用的是key
2.del 關鍵字 用法同list
3.popitem():隨機刪除一個索引值對
4.clear():清空,一個不剩
修改:
1.dict[一個已經存在的key] = value 會對已有的索引值對重新賦值,覆蓋原有的的value
2.dict1.update(dict2):把dict2中的索引值對更新到dict1中,key一樣的會覆蓋,沒有的索引值對會新增
查詢:
1..dict[一個已經存在的key] 當key在dict中不存在的時候,會報錯
2.get(key,defalt=None):與方法1不同的是.key不存在的時候返回None,這個None可以通過參數defalt修改
其他相關操作:
例:dic = {"id": 123, "name": ‘sylar‘, "age": 18, "ok": "科比"}
1.print(dic.keys) # dict_keys([‘id‘, ‘name‘, ‘age‘, ‘ok‘]) 它的形式類似於list,但是並不是list,print(type(dic.keys))的結果是 <class ‘dict_keys‘> ,但是可以當做list來用,可以進行for迴圈.
for key in dic.keys:
print(key)
2.print(dic.values()) #同keys基本一樣,用法也相同
for value in dic.values:
print(value)
3.print(dic.items()) #dict_items([(‘id‘, 123), (‘name‘, ‘sylar‘), (‘age‘,18), (‘ok‘, ‘科比‘)])
for key, value in dic.items:
print(key, value)
*一個特殊情況:直接遍曆dic,列印的也是key.
for i in dic:
print(i)
Python中的字典