字典和集合的區別以及常用方法


字典:

  由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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM