5_Set(集合)和dict(字典)
1.集合
集合是一個(gè)無序不重復(fù)元素的集。基本功能包括關(guān)系測試和消除重復(fù)元素。集合對象還支持 union(聯(lián)合),intersection(交),difference(差)和 sysmmetric difference(對稱差集)等數(shù)學(xué)運(yùn)算。
用大括號
{ }
或者set( )
函數(shù)可以創(chuàng)建集合(如果想創(chuàng)建空集合,必須使用set( )
而不是{ }
,因?yàn)檫@樣{ }
c創(chuàng)建的是一個(gè)空字典)基本功能: 關(guān)系測試 和 消除重復(fù)元素
-
常用操作
-
支持
in
和not in
nums1 = {10, 20, 30, 20, 10, 100, 200, 100} print(10 in nums1) # True print(20 not in nums1) # False
-
在集合中添加新項(xiàng):
- 添加一項(xiàng) : nums1.add(1)
- 添加多項(xiàng) : nums1.update([1,2])
s.update(["mn", "nm"]) # 添加多項(xiàng) s.update("mn") # 添加多項(xiàng)(字符串會(huì)被拆解為單個(gè)字符串)
-
數(shù)學(xué)操作
并集(
union
)、交集(intersection
)、差集(difference
)、對稱差集(symmetric difference
)a = set("abcde") b = set("defghi") print("a:" + str(a)) print("b:" + str(b)) print("a - b 差集: " + str(a - b)) # 差集 a 中有,但是 b 中沒有 print("a | b 并集: " + str(a | b)) # 并集 a 和 b 的元素全部都有 當(dāng)然不會(huì)重復(fù) print("a & b 交集: " + str(a & b)) # 交集 a 和 b 共同有的元素 print("a ^ b 對稱差集: " + str(a ^ b)) # 對稱差集 a 有或者 b 有,但是不是他們都有
-
Set推導(dǎo)
a = {x for x in 'abracadabra' if x not in 'abc'} print(a) >>>{'d','r'}
?
-
2. 字典
Python內(nèi)置了字典:dict的支持,dict全稱dictionary,在其他語言中也稱為map,使用鍵-值(key-value)存儲(chǔ),具有極快的查找速度。
字典以關(guān)鍵字為索引,關(guān)鍵字可以是任何不可變類型,通常是字符串或者數(shù)值。如果元組中只包含字符串和數(shù)字,那么它可以作為關(guān)鍵字。
如果在
{}
中不添加任何的鍵值對,則創(chuàng)建了一個(gè)空的字典。如果把它當(dāng)布爾值來用的話,就是表示False
-
創(chuàng)建方法
-
通過字面量形式創(chuàng)建:
把這些鍵值對用
comma(逗號)
隔開,再把這些鍵值對封裝在一對brace(大括號)
中。 鍵與值之間用冒號隔開。 -
使用dict() 構(gòu)造器創(chuàng)建
d = dict([['sape', 4139], ('guido', 4127), ('jack', 4098)])
-
使用關(guān)鍵字參數(shù)創(chuàng)建
如果字典的
key
是簡單的字符串的時(shí)候,通過關(guān)鍵字參數(shù)也可以方便的創(chuàng)建字典d = dict(sape=4139, guido=4127, jack=4098)
-
-
操作方法
d["b"] = 98 #向 dict中添加新的鍵值對 "b"就是鍵, 98就是值
in
或not in
來判斷key是否存在與dict
根據(jù)
key
獲取value
: 直接使用字典名[鍵]
的方式獲取-
獲取所有的key :
通過
list(dict.keys())
可以獲取在字典中所有的key
組成的list
,這些 key 的順序是隨機(jī)的。 -
獲取所有的 value
通過
list(dict.values())
可以獲取在字典中所有的 value 組成的list
,這些 value 的順序是隨機(jī)的。- 如果想獲取排好序的
key
可以會(huì)用sorted(dict.keys())
- 如果想獲取排好序的
?