dict和set

dict字典{}

Python內置了字典:dict(dictionary),在其餘語言中稱爲map,使用鍵--值(key--vale),查找速度極快。code

特色:鍵是惟一的,值的內容是無序的。

舉個例子:加入你想要根據同窗的姓名查看對應的成績,用list實現的話。blog

names =["aaa","bbb","ccc"]
scores = [77,88,99]get

給定一個名字,要查找對應的成績,就先要在names中找到對應的位置,再從scores中取出對應的成績。這樣的話,list越長,查找的速度就越慢,耗時就越長。數學

查看

若是用dict實現的話,只須要建一個姓名--成績的對照表就能夠了。it

>>>d={"aaa":77,"bbb":88,"ccc":99}
>>>d["aaa"]
77

dict.keys() 返回全部的key值到一個列表裏。
dict.values() 返回全部的value值到一個列表裏。io

可是想要直接調用還須要轉化成list(dict.keys())bfc

增長元素

將數據放入dict中,除了初始化指定外,還能夠經過key放入。date

>>>a["aaa"]
77
>>>a["aaa"]=12
>>>a["aaa"]
12

若是key不存在,dict就會新增元素。循環

經過 in 判斷key是否存在

存在返回True,不存在返回Falsemap

>>>"ddd" in a
False
>>>"aaa" in a
True

經過dict提供的get方法。

存在返回value值,不存在返回None不會有顯示,也能夠本身設定返回值。

>>>a.get("ddd")
>>>a.get("ddd",-1)
-1

刪除元素

要刪除一個dict.pop(k,d=none)

刪除指定K的元素。成功就返回對應的值,失敗則返回自定義的d,若是沒有定義則報錯。

隨機刪除一個dict.popitem()

del dict[K] :刪除指定鍵的元素。

循環

for i in dict:
    print(i,dict[i])  i打印dict中的k,經過K打印對應的value,

更新,dict.update(dict2)

將dict2中的元素,追加到dict中。若是有重複k鍵的,用dict2中的value覆蓋。

a={1:2,2:3,3:4}
b={3:5,4:5}
a.update(b)
a={1:2,2:3,3:5,4:5}
b={3:5,4:5}

set

set和dict相似,也是一組key的集合,但不存儲value。並且set是無序的。

要建立一個set,須要提供一個list做爲集合的輸入:

>>>a = set([1,2,3])
>>>a
{1,2,3}

set中重複的元素會被自動過濾掉:

>>>s = set([1,1,2,3,4,5,6,7,7,7,1])
>>>s
{1,2,3,4,5,6,7}

添加

能夠經過add(key)方法添加元素到set中。若是重複添加,雖然能夠,可是不會有效果。

>>>s =set([1,2,3])
>>>s.add(4)
>>>s
{1,2,3,4}

刪除

能夠經過rmove(key)方法刪除元素:

>>>s.rmove(4)
>>>s
{1,2,3}

能夠經過discard()方法刪除元素和rmove同樣。

discard()和rmove()的區別:
rmove()若是要刪除的元素不存在,則報錯。
discard()若是要刪除的元素不存在,不會報錯。

也能夠通pop()方法刪除,不過該方法是隨機刪除的的。

交集,並集,差集,對稱差集,子集

set能夠堪稱是數學意義上的無序和無重複的集合。所以,兩個set能夠進行數學意義上的交集,並集等操做。

>>>s1 = set([1,2,3])
>>>s2 = set([2,3,4])
>>>s1 & s2   #交集 s1.intersection(s2)
{2,3}

s1.update(s2) #將s2中的元素加入到s1中,賦值給s1

>>>s1 | s2    #並集 s1.union(s2) ,依然是自動刪除重複元素。
{1,2,3,4}

>>>s1 - s2    #相對補集,差集 s1.differrnce(s2)
{1}

>>>s1.symmetric_difference(s2) #對稱差集,把互相不同的打印出來。
>>>s1 ^ s2
{1,4}   

s1.issubset(s2) 判斷s1是否是s2的子集 s1 < s2
s1.issuperset(s2) 判斷s1是否是s2父集 s1 > s2

s1.isdisjoint(s2)  若是s1和s2沒有交集,則返回True,反之返回False

相關文章
相關標籤/搜索