1. 程式人生 > >python字典的一些深入體會

python字典的一些深入體會

12px ali 裏的 applet 深拷貝 sub -h ddr gpo

python字典一些深入體會

python字典3個方法,items(),values(),keys(),返回的對象不是list,3個方法返回的對象可以叠代,字典也可以推導

squares={number:number**2 for number in range(100)}  

Cpython的字典采用散列表作為底層數據結構,只有可哈希的對象才能作為字典的鍵,可哈希的對象就是整個具有不變性的對象,而且可以和其他對象對比,如果一個對象有__hash__方法,__eq__屬性,就是可hash的。
如果兩個對象相等,那麽它們的散列值一定相等,如果兩個散列值相等,那麽對象不一定相等,簡單的理解方式就是1與6都去模5得到的結果都是1,散列值好比就是1,對象是1,6.這就是散列沖突。Cpython用開放定址法解決這個沖突,開放定址法就是當沖突發生是,散列值在散列表這一個空的散列地址存進去
字典復制存在一個淺拷貝和深拷貝,淺拷貝只復制一級目錄,深拷貝復制所有目錄

a={1:{‘a‘,‘b‘}}
淺拷貝的情況下,去到鍵1的值,值是和對象a共享的,操做的時候a裏的值也會改變,深拷貝就是將所有的內容都可以復制一邊
b=a.copy()淺拷貝
form copy import deepcopy深拷貝
c=deepcopy(a)

python字典的一些深入體會