1. <s id="4jtld"></s>
    1. <span id="4jtld"><meter id="4jtld"></meter></span>

        <span id="4jtld"></span>
      1. <s id="4jtld"><noscript id="4jtld"><i id="4jtld"></i></noscript></s>
        溫馨提示×

        Python集合與字典數據類型實例分析

        發布時間:2022-03-08 09:05:30 來源:億速云 閱讀:92 作者:iii 欄目:開發技術

        這篇文章主要講解了“Python集合與字典數據類型實例分析”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Python集合與字典數據類型實例分析”吧!

          前言

          集合數據類型是沒有順序的簡單對象的聚集,并且集合中的元素不會重復。Python中的集合包括可變集合對象(set)與不可變集合對象(frozenset)。字典是具有鍵值對的數據結構。每個鍵不能重復,并且可以根據字典的鍵查詢到他的值。這兩位好兄弟外觀組成都是使用{}進行包裹。并且底層原理有一定的相通性。他們的底層實現一般都是用了哈希表。

          一、集合類型

          1.定義

          • 集合數據類型分為可變集(set)與不可變集(frozenset)兩種。

          • 集合中的元素不可以重復,并且無序。(因為對象存在集合內是以哈希對象的形式存儲的)

          • 集合內放置的應該是不可變對象(數值型數據類型、字符串元組、不可變集合)

          • 空集合的的表示方法是set()。{}是空字典的表示方式。

          • 可以使用in /not in判斷元素是否在集合內。

          2.集合使用方式

          集合的使用方式與中學時代學到的集合有些相似。也就是說數學上的集合交、并、補、差運算可以運用到Python集合上。表示方式如下

          假設集合有A={1,2,3}、B={2,3,4}、C={3,4,5}、D={1,2,3,4}四個 交:

          A|B|C={3}

          并:

          A&B={1,2,3,4}

          補:

          A^D={4}

          A-B={1}

          可以使用這些方法進行是否有相同元素,是否具有包含關系的判斷

          3.集合推導式

          前面講列表的時候講到了列表推導式,可以直接生成一個自己的想要的列表。今天咱就講一下集合列表推導式

          推導式語法:

          {變量通式 for i in 序列 [判斷條件]}

          例如下式求偶數的平方

          print({i*i for i in range(10) if i%2==0})

          4.可變集合

          可變集合用set進行創建(可變集合底層依舊是哈希表,所以只能存儲不可變對象) print(set([1,2,3]))

          創建的對象有一系列的方法。add(x)、remove(x)、discard(x)、pop()、clear() 上面幾個函數分別對應的增加元素、移除元素(不存在拋異常)、移除元素、隨機彈出元素、清空集合

          實際操作代碼:

          '''
          集合set,底層依舊是哈希表,無序不可重復
          '''
          # 操作(增刪改,創建集合)
          # 聲明方式一
          s1={123,'hello',666,888,'Tom'}
          # 聲明方式二
          s2=set({123,'hello',666,888,'Tom'})
          # 集合生成式
          s3={i*i for i in range(10)}
          print(s1,id(s1),type(s1))
          print(s2,id(s2),type(s2))
          print(s3)
          # 判斷集合是否相同(比較的是內部含有的元素)
          print(s1==s2)
          print(s1==s3)
          
          # 增
          # 適合一個一個的增加
          s1.add(123123)
          print(s1)
          # 適合增加多個元素
          # 將字符串直接加進去
          s1.update(['world','milk'])
          s1.update(('world1','milk1'))
          # 將字符串拆開加進去
          s1.update('world3','milk3')
          print(s1)
          
          # 刪
          # 刪除傳進去的元素,沒有的話拋出異常
          # s1.remove(777)
          # 刪除元素,沒有的話不拋異常None
          s1.discard(888)
          print(s1.discard(777))
          print(s1)
          # 隨機刪除一個元素(不能進行參數的傳遞)
          s1.pop()
          # 清除所有元素
          s1.clear()
          # 空集合
          print(s1)
          
          '''集合之間的關系,交,并,差集,并集差集子集,超集,元素是否相同'''
          s4=set(s2)
          s5=set(s2)
          s4.add('joso')
          s5.add('pink')
          # s2是否是s4的子集
          print(s2.issubset(s4))
          # s2是否是s4的超集
          print(s2.issuperset(s4))
          # 兩集和元素是否都不相同
          print(s5.isdisjoint(s4))
          
          # 交集
          print('--------------------')
          print(s4.intersection(s2))
          print(s4 & s2)
          # 并集
          print('--------------------')
          print(s4.union(s5))
          print(s4 | s5)
          # 差集
          print(s4.difference(s5))
          print(s4-s5)
          # 對稱差集
          print(s4.symmetric_difference(s5))
          print(s4 ^ s5)

          二、字典類型

          1.定義

          字典是鍵和值的映射關系,所以有時也稱為映射數據類型。字典的鍵是哈希數據類型(不可變),值是任意類型,并且在一個字典內每種鍵只能有一個,值可以重復可以任意取??梢酝ㄟ^鍵獲取到相應的值。

          鍵值對的一般形式就是 鍵:值

          所以字典的一般形式就是{鍵1:值,鍵2:值,鍵3:值…}

          創建字典可以直接使用字面量{鍵1:值,鍵2:值,鍵3:值…},也可以使用dict進行創建。

          dict支持字典轉字典、支持序列轉字典。

          2.字典的使用方式

          字典使用的時候可以單獨的獲取鍵、值與【鍵、值】列表

          方式是:

          • dic.keys() #獲取鍵列表

          • d.values() #獲取值列表

          • d.items() #獲取元組形式的鍵值列表

          字典可以使用in / not in判斷字典內是否含有某鍵。

          字典對象有一系列方法:

          • clear() #清空元素

          • copy() #復制字典

          • get(k) #根據鍵獲取值

          • pop(k) #如果鍵存在則刪除并返回值,不存在拋出異常

          • pop(k,v)#如果鍵存在則刪除并返回值,不存在返回V

          • setdefault(k,v) #如果k鍵存在則返回其值,如果不存在添加k鍵并賦值None

          • update() #傳入字典或鍵值對更新操作

          3.字典推導式

          字典推導式與列表推導式、集合推導式使用方法類似,只不過他有兩個值 {k:v for k in …for v in …}

          {x:x*x for x in range(10) if x%2==0}
          {x:y for x in range(10) for y in range(10,20)}

          4.代碼練習

          '''
          對比學習,字典與列表有什么不同呢?
          列表是方括號 列表內的數據是單個存在的 有序 可以重復出現
          字典是花括號 字典內的數據是成對存在的 無序 鍵值對不可亂寫,并且鍵重復的話,值會進行覆蓋
          
          字典內的數據沒有順序,底層的原理是哈希表,用哈希表實現鍵值對應
          '''
          # 字典的創建方式一
          # 字典內的同一個鍵對應不同值時,會將前面的值進行覆蓋
          s={'name':'張三','paassward':'888888','name':'瑪卡巴卡'}
          # 字典的創建方式二
          ss=dict(user='pig',passward='123123')
          # 字典的創建方式三(列表進行創建)
          t1=['username','passward']
          t2=['Tom','1980']
          # upper,lower是對字符串進行全部大寫,全部小寫的函數
          sss={t1.upper():t2.lower() for t1,t2 in zip(t1,t2)}
          # 打印顯示字典類型
          print(s,type(s))
          print(ss,type(s))
          print(sss,type(s))
          # 字典元素的增加/修改
          # 由于每個鍵在字典內只能有一個,所以當一個鍵對應新的值時,會產生覆蓋
              # 也就是對原來鍵對應的值進行了修改
          s['name']='李四'
          print(s)
          # 或者用一個原來沒有的鍵,產生新增的效果
          s['age']='20'
          print(s)
          
          # 獲取字典值
          # 獲取所有鍵
          keyS=s.keys()
          print(keyS)
          # 獲取所有值
          valueS=s.values()
          print(keyS,valueS)
          # 獲取所有鍵值對
          iteM=s.items()
          print(iteM)
          # 給鍵獲取值 字典名[key]-----找不到會報錯
          print(s['paassward'])
          # 給鍵獲取值 字典名.get()----找不到可以指定打印什么
          print(s.get('paassward'))
          print(s.get('qwe','沒找到'))
          # 判斷是否在字典內(鍵值都可以判斷)
          print('paassward' in s,'888888' in s)
          # 字典元素的清除
          del s['name']
          print(s)
          # 清空字典
          s.clear()
          print(s)
          
          # 字典的遍歷
          # temp作為字典內的鍵,然后在字典內尋找值
          for temp in ss:
              print(temp,ss[temp],ss.get(temp))

          感謝各位的閱讀,以上就是“Python集合與字典數據類型實例分析”的內容了,經過本文的學習后,相信大家對Python集合與字典數據類型實例分析這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

          免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

          主題地圖

          欧美午夜理伦三级在线观看,欧美午夜乱伦片,欧美午夜乱色视频在线观看,欧美午夜免费一区二区,欧美午夜片欧美片在线观看