Python-基础知识-字典dict和集合set
生活随笔
收集整理的這篇文章主要介紹了
Python-基础知识-字典dict和集合set
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
字典
Python內置了字典:dict的支持,dict全稱dictionary,在其他語言中也稱為map,使用鍵-值(key-value)存儲,具有極快的查找速度。
如果用dict實現,只需要一個“名字”-“成績”的對照表,直接根據名字查找成績,無論這個表有多大,查找速度都不會變慢。用Python寫一個dict如下:
>>> stu = {'Michael': 95, 'Bob': 75, 'Tracy': 85} #創建字典 >>> stu['Michael'] 95字典的特性:
- dict是無序的
- key必須是唯一的,所以自動去重
字典的基本操作:
- 增加
- 刪除
- 修改
- 查找
一、增加和修改
>>> info = { ... 'stu1101': "TengLan Wu", ... 'stu1102': "LongZe Luola", ... 'stu1103': "XiaoZe Maliya", ... } #創建一個字典info >>> >>> info {'stu1103': 'XiaoZe Maliya', 'stu1101': 'TengLan Wu', 'stu1102': 'LongZe Luola'} >>> info["stu1104"] = "蒼井空" #增加一個,如果沒有這個鍵就增加,否則就修改這個鍵 >>> info {'stu1104': '蒼井空', 'stu1103': 'XiaoZe Maliya', 'stu1101': 'TengLan Wu', 'stu1102': 'LongZe Luola'}?二、刪除
>>> info.pop("stu1101") #字典的內置方法,刪除鍵名為stu1101 'TengLan Wu' >>> info {'stu1104': '蒼井空', 'stu1103': 'XiaoZe Maliya', 'stu1102': 'LongZe Luola'} >>> del info['stu1103'] #python自帶的刪除方法,刪除鍵名為stu1103 >>> info {'stu1104': '蒼井空', 'stu1102': 'LongZe Luola'} >>> info.popitem() #隨機刪除一個 ('stu1104', '蒼井空') >>> info {'stu1102': 'LongZe Luola'}?三、查找
>>> 'stu1102' in info #判斷成員關系 True >>> info.get('stu1102') #查找方法,如果查找對象不存在,此方法不報錯,沒有返回結果 'LongZe Luola' >>> info['stu1105'] #此方法查找不存在的對象會報錯 Traceback (most recent call last):File "<stdin>", line 1, in <module> KeyError: 'stu1105'?四、獲取字典中所有鍵名、值和鍵值對
>>> info = { ... 'stu1101': "TengLan Wu", ... 'stu1102': "LongZe Luola", ... 'stu1103': "XiaoZe Maliya", ... } >>> >>> >>> info.values() #獲取值 dict_values(['XiaoZe Maliya', 'TengLan Wu', 'LongZe Luola']) >>> info.keys() #獲取鍵名 dict_keys(['stu1103', 'stu1101', 'stu1102']) >>> info.items() #獲取鍵值對,以list的方式返回 dict_items([('stu1103', 'XiaoZe Maliya'), ('stu1101', 'TengLan Wu'), ('stu1102', 'LongZe Luola')])?五、setdefault方法
>>> info.setdefault("stu1106","Alex") 'Alex' >>> info {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'} >>> info.setdefault("stu1102","龍澤蘿拉") #因為字典中已有stu1102,并且字典有自動去重功能 'LongZe Luola' >>> info {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}?六、update方法
>>> info {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'} >>> b = {1:2,3:4, "stu1102":"龍澤蘿拉"} >>> info.update(b) #將字典b加入到字典info中 >>> info {'stu1102': '龍澤蘿拉', 1: 2, 3: 4, 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}?七、循環字典
#方法1,建議使用 for key in info:print(key,info[key])#方法2 for k,v in info.items(): #會先把dict轉成list,數據里大時莫用print(k,v)?八、多級嵌套字典及字典
>>> football = { ... '英超':{ ... '曼聯':{ ... '積分':60, ... '進球':45, ... '排名':1 ... }, ... '阿森納':{ ... '積分':55, ... '進球':30, ... '排名':4 ... }, ... '切爾西':{ ... '積分':59, ... '進球':40, ... '排名':2 ... } ... }, ... '中超':{ ... '廣州恒大':{ ... '積分':45, ... '進球':25, ... '排名':1 ... }, ... '上海上港':{ ... '積分':20, ... '進球':10, ... '排名':2 ... }, ... '江蘇蘇寧':{ ... '積分':30, ... '進球':40, ... '排名':3 ... } ... }, ... '西甲':{ ... '巴薩':{ ... '積分':60, ... '進球':55, ... '排名':1 ... }, ... '皇馬':{ ... '積分':55, ... '進球':59, ... '排名':2 ... }, ... '馬競':{ ... '積分':55, ... '進球':58, ... '排名':3 ... } ... } ... } >>> football['中超']['廣州恒大'] {'進球': 25, '積分': 45, '排名': 1} >>> football['中超']['廣州恒大']['積分'] 45?集合
set和dict類似,也是一組key的集合,但不存儲value。由于key不能重復,所以,在set中,沒有重復的key。
集合的主要作用:
- 去重,把一個列表變成集合,就自動去重了
- 關系測試,測試兩組數據之前的交集、差集、并集等關系
集合的基本操作:
- 創建
- 增加
- 刪除
一、創建
>>> set1 = set([1,3,4,5,99,54,22]) >>> set2 = set([3,22,5,6,7,10,4]) >>> set1 {1, 99, 3, 4, 5, 54, 22} >>> set2 {3, 4, 5, 6, 7, 10, 22} >>> >>> set3 = set("Hello") #創建一個唯一字符的集合 >>> set3 {'e', 'l', 'H', 'o'}二、增加
>>> set1.add(20) >>> set1 {1, 99, 3, 4, 5, 20, 54, 22} >>> set2.update([10,37,42]) >>> set2 {3, 4, 5, 6, 7, 37, 10, 42, 22}三、刪除
>>> set1.remove(1) #如果元素不存在,會報錯 >>> set1 {99, 3, 4, 5, 54, 22} >>> set1.discard(100) #如果元素存在就刪除,不存在則do nothing >>> set1 {99, 3, 4, 5, 54, 22} >>> set1.pop() #使用pop()隨意刪除一個 99 >>> set1 {3, 4, 5, 54, 22} >>> len(set1) #set 的長度 5四、集合
>>> set1 = set([1,3,4,5,99,54,22]) >>> set2 = set([3,22,5,6,7,10,4]) >>> set1 {1, 99, 3, 4, 5, 54, 22} >>> set2 {3, 4, 5, 6, 7, 10, 22} #包含set1和set2中的每一個元素,取并集(即A和B) >>> set1.union(set2) {1, 99, 3, 4, 5, 6, 7, 10, 54, 22} >>> set3 = set1 | set2 >>> set3 {1, 99, 3, 4, 5, 6, 7, 10, 54, 22} #包含set1和set2中相同的元素,取交集(即AB中都有的) >>> set1.intersection(set2) {3, 4, 5, 22} >>> set3 = set1 & set2 >>> set3 {3, 4, 5, 22} #包含set1中有但是set2中沒有的元素,取差集(即A有B沒有) >>> set1.difference(set2) {1, 99, 54} >>> set3 = set1 - set2 >>> set3 {1, 99, 54} #包含set1和set2中不重復的元素,取對稱差集(即A有B沒有,B有A沒有) >>> set1.symmetric_difference(set2) {1, 6, 7, 99, 10, 54} >>> set3 = set1 ^ set2 >>> set3 {1, 6, 7, 99, 10, 54} #set4是否set5的子集 >>> set4 = set([1,2,3,4,5,6,7,8,9]) >>> set4 {1, 2, 3, 4, 5, 6, 7, 8, 9} >>> set5 = set([1,3,5,7,9]) >>> set5 {1, 3, 5, 9, 7} >>> set4.issubset(set5) False >>> set4 {1, 2, 3, 4, 5, 6, 7, 8, 9} >>> set6 = set4 <= set5 >>> set6 False #set4是否包含set5的全部元素 >>> set4.issuperset(set5) True >>> set4 {1, 2, 3, 4, 5, 6, 7, 8, 9} >>> set6 = set4 >= set5 >>> set6 True五、成員關系測試
>>> set7 = set([1,2]) >>> set7 {1, 2} >>> 1 in set7 #測試1是否是set7的成員 True >>> set7 = set([1,2,100]) >>> set7 {1, 2, 100} >>> 100 not in set7 #測試100是否不是set7的成員 False轉載于:https://www.cnblogs.com/kirusx/p/6523657.html
總結
以上是生活随笔為你收集整理的Python-基础知识-字典dict和集合set的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux内核启动过程概述
- 下一篇: install xgboost pack