python-集合、字典

來源:互聯網
上載者:User

標籤: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-集合、字典

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.