字典:
由key和value組成,字典是有序的(python3.7中)。
字典是可變的
字典支持索引操作。
字典對應的哈希表中存儲了哈希值、key和value
字典的key不能重復
集合:
集合沒有key和value的配對,是無序的,且元素值唯一。
集合是可變的
集合不支持索引/切片操作。
集合對應的哈希表中僅存儲了哈希值
集合的值不能重復
創建&初始化
dic = {'key'='value'}
dic1=dict()
1)不允許同一個鍵出現兩次。創建時如果同一個鍵被賦值兩次,后一個值會被記住
2) 鍵必須不可變,所以可以用數字,字符串或元組充當。不可用可變元素(列表、字典、集合)
set ={1,2}
set1 =set()
1)集合中只能添加一些不可變類型:數字,字符串或元組
2)集合本身可以修改,但是集合中的已存在的元素不能修改(因為已存在的元素是不可變類型)
注意:創建一個空集合必須用 set() 而不是 { },因為 { } 是用來創建一個空字典
字典和列表中無法直接轉換
常用方法
可以通過dir查看所有內置方法
字典常用方法
- dict.copy() 返回字典的淺拷貝。復制后初始內容相同,id不同,后續原字典變化不會影響復制出來的字典
- dict.get(key,default=None) 返回字典key對應的值,如果找不到對應的key,則返回默認值
- dict.has_key(key) 如果key在字典中,返回true 否則返回False
- dict.items() 以列表返回字典對應的(key,value)
- dict.keys() 以列表返回字典所有的key
- dict.values() 以列表返回字典所以的value
- dict.setdefault(key,default=None)返回字典key對應的值,如果找不到,則在字典中增加key:default的鍵值對
- dict.update(dict1)把dict1的內容更新到dict內。只變更原有的dict的內容,不會生成xin的id。當key相同時,dict的value值會覆蓋dict的值
- dict.pop(key)刪除對應key的鍵值對,並返回刪除的value值。如果鍵值不存在,會報錯
- dict.popitem()刪除字典中最后一個鍵值對
- del dict[key] 刪除對應key的鍵值對
- del dict 刪除字典
- dict[key]=value key存在則更新value值,key不存在,則新增鍵值對
集合常用方法
- s.add(value) 添加元素
- s.update() 修改當前集合,可以添加新的元素或集合到當前集合中
- s.discard(vallue)刪除元素,當元素不存在時,不會報錯
- s.remove(value)刪除元素,當元素不存在時,會報錯
- s.pop()隨機刪除一個元素
- s.copy() 淺拷貝集合
- s.difference(s1) 返回集合的差集,即返回的集合元素包含在第一個集合s中,但不包含在方法的參數s1中。會返回一個新集合
- s.difference_update(s1) s1中移除兩個集合都存在的元素,直接在原來的集合中移除元素,沒有返回值
- s.symmetric_difference(s1) 會移除兩個集合中都存在的元素,會返回一個新的集合
- s.symmetric_difference_update(s1) 移除當前集合s與集合s1相同的元素,並將s1中不同的元素插入到當前集合s中
- s.intersection(s1,s2,s3...)用於返回兩個或更多集合中都包含的元素,即交集。會返回一個新的集合
- s.intersection_update(s1s2,s3...) 用於獲取兩個或更多集合中都重疊的元素,即計算交集。在原始的集合上移除不重疊的元素。
- s.isdisjion(s1) 判斷兩個集合是否包含相同的元素,如果沒有返回 True,否則返回 False
- s.issubset(s1)判斷集合s的所有元素是否都包含在指定集合s1中,如果是則返回 True,否則返回 False。
- s.issuperset(s1)判斷指定集合s1的所有元素是否都包含在原始的集合s中,如果是則返回 True,否則返回 False。
參考資料:
https://www.runoob.com/python3/python3-set.html