1. 深入dict
froma ={}
2.常用方法:
a = ,"bobby2:
":}# clear
# a.clear()
#copy,返回淺拷貝
# new_dict =a.copy()
# new_dict[
"bobby1
"]["
company
"] = "
imooc3
"# 深拷貝
# import copy
# new_dict =copy.deepcopy(a)
# new_dict[
"bobby1
"]["
company
"] = "
imooc3
"# fromkeys
new_list = ["
bobby1
","bobby2"]
new_dict = dict.fromkeys(new_list,)
# get
# value = new_dict.get("
bobby
",{})
# print(value)
#items
# for key,value in
new_dict.items():
# print(key,value)
# setdefault
# 他對去呼叫d.
get(k,d)同時d[k] 設定
default_value = new_dict.setdefault("
bobby
","imooc")
print(new_dict)
# update:
new_dict.update(bobby="
imooc")
new_dict.update([(
"bobby
","imooc
")])
new_dict.update(((
"bobby
","imooc
"),))
3. dict的子類
# 不建議繼承list和dictclass
mydict(dict):
def __setitem__(self,key,value):
super().__setitem__(key,value*2
)my_dict = mydict(one=1
)my_dict[
"one
"] = 1
print(my_dict)
# 建議用userdictfrom
collections import userdict
class
mydict(userdict):
def __setitem__(self,key,value):
super().__setitem__(key,value*2
)my_dict = mydict(one=1
)print(my_dict)
fromcollections import defaultdict
class
mydict(userdict):
def __setitem__(self,key,value):
super().__setitem__(key,value*2
)my_dict = mydict(one=1
)print(my_dict)
my_dict =defaultdict(dict)
my_value = my_dict["
bobby"]
# __missing__方法,如果找不到某個key,那麼實現乙個keyvalue
記住:其實setdefault裡面實現了__missing__魔法函式,表示如果是找不到某個key,那麼實現乙個預設的keyvalue
3. set和frozenset
# set集合 frozenset 不可變集合 無序 不重複
s = set('
abcde')
s = set(['
a','
b','c'
])print(s)
# 初始化方法
s =
print(type(s))
s2 = frozenset('
abcde
') # 不可變的型別,可以作為dict的key
print(s2)
記住:和數學的操作一樣,差集,交集,並集等。。
記住:在去重上應用很高,效能很高。
記住:還可以用:
for"c"inset:
print (
"i am in set
")
記住:這裡就實現了__contain__方法
記住:還有實現了__issubset__方法
4. dict和set他們背後實現的原理:
1. dict的key或者set的值都是必須可以hash的,不可變物件都是可以hash的,str,fronzenset,tuple,自己實現的類的__hash__
2. dict的記憶體花銷大,但是查詢速度快,自定義的物件或者python內部的物件都使用dict包裝的。
3.dict的儲存順序和元素新增順序有關。
4.新增資料有可能改變已有資料的順序。
5.list和array是一種自增的方式,隨著資料在增加,申請記憶體空間的動作不斷操作。
6.dict只有在記憶體空間少於1/3的時候才會去申請記憶體空間。
Python說文解字 雜談08
1.python變數到底是什麼?python和j a中的變數本質不一樣,python的變數實質是乙個指標 int str,便利貼 a 1 1.a貼在1上面 2.它的過程是先生成物件,然後貼便利貼。3.is 是指的標籤貼是否一樣。a 1 b 1 這個是一樣,用的是小整數的內部inter機制的內部優化。...
Python說文解字 雜談04
1.鴨子型別 當你看到乙隻鳥走來像鴨子,游泳起來像鴨子,叫起來也像鴨子,他麼他就可以叫做鴨子。任何可迭代的物件。一樣的方法,可以用可迭代的話,就可以迭代的組合列印。getitem 可以塞到任何的類中,跟鴨子型別一樣,指定相同的方法名。魔法函式正是充分運用了鴨子型別,能夠被本身呼叫。class cat...
Python說文解字 雜談02
1.py中三個中啊喲的概念type object和class的關係。type生成了int生成了1 type class obj type用來生成類物件的 object是最頂層的基類 type也是乙個類,同時type也是乙個物件 結論 類是由type這個類生成的物件。obejct是所有類都繼承的基類。...