標籤:ble print 結構 map 初始化 int one default 其他
集合和字典set(可變、無序、不重複)初始化
#set()->new empty set ibjecta=set()print(a) #輸出:set()#set(iterable)->new set objectprint(set(range(5))) #輸出:{0, 1, 2, 3, 4}print(set(list(range(5)))) #輸出:{0, 1, 2, 3, 4}s={} #1print(s)print(type(s)) #輸出:<class ‘dict‘>s1={(1,2),3,‘a‘}print(s1) #輸出:{(1, 2), ‘a‘, 3}s2={[1],(1,),1} #2print(s2) #TypeError: unhashable type: ‘list‘
1當{}裡沒有任何值的時候,系統會判定為字典;2set元素必須要可以hash,也就是不可變的;
注意:set可以迭代,但是沒有索引因為他是無序的;
set操作
#set(elem)增加s={1,}s.add(2)print(s) #輸出:{1,2}s.add(1)print(s) #輸出:{1,2}#1#update(*other)#合并其他元素到set中,other必須是可迭代對象s1={‘da‘,31,‘dd‘,234,‘f‘,25,}s2={312,"2",31,"312ds"}print(s1.update(s2)) #輸出:Noneprint(s1) #輸出:{‘f‘, ‘da‘, ‘dd‘, 234, ‘312ds‘, ‘2‘, 312, 25, 31}
1如果元素存在,則什麼也不做
#remove(elem)#從set中移除一個元素,不存在拋異常a={‘f‘, ‘da‘, ‘dd‘, 234, ‘312ds‘, ‘2‘, 312, 25, 31}print(a.remove(‘f‘)) #輸出:Noneprint(a) #輸出:{‘2‘, 234, ‘da‘, ‘312ds‘, 312, 25, ‘dd‘, 31}#discard(elem)#從set中移除一個元素,不存在什麼也不做b={234, ‘312ds‘, ‘2‘, 312, 25, 31}print(b.discard(234)) #輸出:Noneprint(b) #輸出:{‘2‘, 312, 25, ‘312ds‘, 31}#1#pop()->item#移除並返回任意元素c={312, 25, 31,1789}print(c.pop())print(c)#clear()#移除所有元素d={312, 25, 31,1789}print(d.clear())print(d)
1在對比remove與discard,應該優先使用discard他的錯誤提示比較溫和;
注意:set為非線性無序的,所有自然沒有改這一說,能刪一個,增一個來類比改
字典(可變,無序的、可以不重複)初始化
#空字典d1={}d2=dict()print(d1)print(d2)#使用key=value來初始化d3=dict(a=12,b=3)print(d3) #輸出:{‘a‘: 12, ‘b‘: 3}#以下幾種方法,必須是二元可迭代結構才能d4=dict(((1,‘a‘),(2,‘b‘)))print(d4) #輸出:{1: ‘a‘, 2: ‘b‘}d5=dict(([1,‘1‘],[2,‘2‘]))print(d5) #輸出:{1: ‘1‘, 2: ‘2‘}d6=dict([[1,‘1‘],[2,‘2‘]])print(d6) #輸出:{1: ‘1‘, 2: ‘2‘}#dict(mapping,**kwarg)使用一個字典構建領一個字典d7=dict(d6,a=2)print(d7)#最簡單的定義方法d8={‘a‘:1,‘q‘:3}print(d8)#類方法dict.fromkeys(iterable,value),用來統一賦值d=dict.fromkeys(range(5))print(d)d=dict.fromkeys(range(5),10)print(d)
字典元素的訪問
#d[key],不存在拋異常d={1: ‘1‘, 2: ‘2‘, ‘a‘: 2}print(d[‘a‘])#get(key,[,default]) 返回key對應的值value,後面可是設定預設值,不存在返回Noned={1: ‘1‘, 2: ‘2‘, ‘a‘: 2}print(d.get(2,"exit")) #輸出:2 print(d.get(23,"no exit")) #輸出:no exitprint(d)#setdefault(key,[,default]) 返回key對應的值value,後面可是設定預設值,不存在返回Noneprint(d.setdefault(23,"no exit"))print(d) #輸出:{1: ‘1‘, 2: ‘2‘, ‘a‘: 2, 23: ‘no exit‘}#1
1:由上述看來如果查看字典有不存的內容且要加入,那麼就要用setdefault
字典的增加和修改
#d[key]=value,如果key不存在那麼是添加,如果存在是修改d={1: ‘1‘, 2: ‘2‘, ‘a‘: 2}d["wuyanzu"]="123"print(d) #輸出:{1: ‘1‘, 2: ‘2‘, ‘a‘: 2, ‘wuyanzu‘: ‘123‘}#update([other])->None#使用另一個字典的kv來更新本字典,key不存在就添加,存在就覆蓋d1=dict(apple=‘a‘,pear=‘p‘)print(d1.update(d)) #輸出:Noneprint(d1) #輸出:{‘apple‘: ‘a‘, ‘pear‘: ‘p‘, 1: ‘1‘, 2: ‘2‘, ‘a‘: 2, ‘wuyanzu‘: ‘123‘}
字典的刪除
a={1: ‘1‘, 2: ‘2‘, ‘a‘: 2, ‘wuyanzu‘: ‘123‘}#pop(key,[,default])#key存在print(a.pop(1)) #輸出:1,返回的是keyprint(a) #輸出:{2: ‘2‘, ‘a‘: 2, ‘wuyanzu‘: ‘123‘}#key不存在,default存在a={1: ‘1‘, 2: ‘2‘, ‘a‘: 2, ‘wuyanzu‘: ‘123‘}print(a.pop(3,"no exist")) #輸出:no exist#key不存在,default不存在a={1: ‘1‘, 2: ‘2‘, ‘a‘: 2, ‘wuyanzu‘: ‘123‘}print(a.pop(3)) #拋異常,keyerrora={1: ‘1‘, 2: ‘2‘, ‘a‘: 2, ‘wuyanzu‘: ‘123‘}#popitem移除並返回任意一個索引值對,直到空字典時,拋出異常print(a.popitem())print(a.clear())print(a)#輸出(‘wuyanzu‘, ‘123‘)None{}d={‘a‘:1,‘b‘:‘b‘,‘c‘:[1,3,5]}#deldel d[‘c‘]print(d)#輸出:{‘a‘: 1, ‘b‘: ‘b‘}
del刪除是減少對象的引用,而不是刪除記憶體裡的引用的內容;
字典遍曆
d={‘a‘:1,‘b‘:‘b‘,‘c‘:[1,3,5]}#key遍曆for k in d.keys(): print(k)#輸出abcfor k in d: print(d[k]) #預設也是對key進行遍曆;#value遍曆for v in d.values(): print(v)#輸出1b[1, 3, 5]#k,v都遍曆for k,v in d.items(): print(k,v)#輸出a 1b bc [1, 3, 5]
字典的key和set要求一致,必須是hashable(不可變類型);
python-集合、字典