天天看點

Python中的字典

字典(dict)

dic是映射類型,由{}括起來的鍵值對組成,在dict中key是唯一的.在儲存的時候,根據key來計算出唯一個記憶體位址. 然後将key-value儲存在這個位址中.這種算法被稱為hash算法,是以,在dict中存儲的key-value中的key必須是可hash的,如果你搞不懂什什麼是可哈希, 暫時可以這樣記, 可以改變的都是不可哈希的,可哈希就意味着不可變. 這個是為了能準确的計算記憶體位址而規定的。

Python中的字典

已知的可哈希(不可變)的資料類型: 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))的結果是 ,但是可以當做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.