python -- 字典 集合

一、字典
 
       定義:字典是以 key :value 的形式來保存數據,用{} 來表示,存儲的是 key : value
       查找效率比較高(注:字典存儲數據時,用的是hash值來存儲,算法不能變(python)
        數據必須是不可變的(可哈希),字典的key必須是可哈希的(不可變)
       
           列表是可變的,不可哈希
           元組是不可變的,可哈希的
 
二、字典的增刪改查
 
    增長
 
        dic[新key] = 值
 
        dic.setdefault()  有添加的功能,若是key存在,不添加
        流程:判斷新key是否在字典中存在,若是已經存在了,不作變動;若是不存在,執行添加操做
 
    刪除
 
        dic.pop(key) 
        dic.popitem()  隨機刪除一項,在python早期的版本中,字典是無序的。
        del dic[key]    
        dic.clear()  清空
 
    修改
 
        dic[老key] = 值
        update(dic1)     # 把dic1中的內容更新到dic中,若是key重名,則修改替換,若是不存在key,則新增。
 
    查詢 
 
        通常用key來查找具體的數據。
         一、直接使用key就能夠拿到value。當key不存在時,報錯  
         二、dic.get(key)  當key 不存在返回 None 
                                   當key存在時,返回第二個參數,默認第二個參數爲 None
         三、 dic.setdefailt()  第一個功能是添加(當key不存在的時候)  第二個功能是查詢(根據你給的key)
                整個執行流程:判斷給的key是否存在,若是存在,就不執行新增流程,直接查詢出這個key對應的value
                若是key不存在,先執行新增操做,再使用key把對應的value查詢出來。
 
      遍歷,字典是一個可迭代對象
            
            a,b = 1,2 # 把後面的兩個值分別賦值給前面兩個變量,解構,解包
            元組和列表是能夠解包的
    for k,v in dic.items():
        print(item)
        k,v = item   #解構
        k = item[0]
        v = item[1]
        print(k,v)
 
            遍歷字典的兩套方案
      一、使用for循環直接遍歷字典
dic = {"趙四":"劉曉光", "劉能":"王曉利", "王木生":"範偉"}
for key in dic:
    print(key)
    print(value)

  

   二、可使用字典的items() +解構能夠直接獲取到key 和 value python

for k,v in dic.items():
    print(k)
    print(v)

  

三、字典的相關操做
 
        dic.keys()  獲取到全部的鍵值
        dic.values()  獲取到全部的值
        dic.items()  獲取到全部的鍵值對
 
四、字典的嵌套
 
        字典的嵌套,字典套字典
 
五、 set 集合
 
        set集合是python的一個基本數據類型。set中的元素是不重複的無序的,裏面的元素必須是可hash的(int,str,tuple,bool)
        set 就是dic類型的數據但不保存value,只保存key set也用{}表示
 
        注: set集合中的元素必須是可hash的,但set自己是不可hash的,set是可變的
 
        使用set的不可重複的特性,咱們可使用set來去重  
# 給 list 去重
lst =[45,6,'geg',45,6]
lst = list(set(lst))   #把list轉化成set,再轉化回list
print(lst)

  

 
 六、set集合的增刪改查
 
         一、增長
             s.add('元素')  # 重複的內容不會被添加到set集合中
 
             s.update('元素')   #迭代更新
 
          二、刪除
    
             item = s.pop()   # 隨機彈出一個
             s.remove('元素')   # 若這個元素不存在,刪除在會報錯
             s.clear()  #清空set集合,清空完以後,會打印爲 set(),要和dic區分
 
         三、修改
 
            set集合中的數據沒有索引,也沒辦法去定位一個元素,因此沒有辦法直接修改
            咱們能夠採用先刪除後添加的方式來完成修改操做
s = {"劉嘉玲", '關之琳', "王祖賢","張曼⽟", "李若彤"}
# 把劉嘉玲改爲趙本⼭
s.remove("劉嘉玲")
s.add("趙本⼭")
print(s)

  

  四、查詢
 
             set 是一個可迭代的對象,因此能夠進行for循環
 
 
七、set集合的一些其餘操做
 
  交集:s1&s2   s1.intersection(s2)
  並集:s1|s2     s1.union(s2)
  差集 :s1 -s2    s1.difference(s2)     獲得s1 中單獨存在的元素
  反交集(s1^s2)   s1.symmetric_difference(s2)  兩個集合中單獨存在的元素
  子集:  s1 < s2    s1.issubset(s2)   s1 是 s2 的子集嗎?返回  True  or  False
  超集: s1 >s2   s1 是s2 的超集嗎? False  or  True
 
 
  set集合自己是能夠發生改變的,是不可hash的。咱們能夠用frozenset來保存數據。frozenset是不可變的,也就是一個可哈希的數據類型 
s = frozenset(["趙本⼭", "劉能", "⽪⻓⼭", "⻓跪"])
dic = {s:'123'} # 能夠正常使⽤了
print(dic)

#{frozenset({'劉能', '⽪⻓⼭', '趙本⼭', '⻓跪'}): '123'}
相關文章
相關標籤/搜索