鍵值對數據 dict dict = {'鍵':'值'}python
存儲數據 字典的查找快一些(消耗的內存大)面試
不可哈希的,就是可變的數據code
可變的數據不能哈希 不可變的數據能哈希對象
字典的鍵:不可變數據 類型 鍵不能重複 重複的話就會把值覆蓋索引
字典的值 :能夠隨意內存
查 :rem
print(dic['25']) #經過鍵去查找值
增:get
dic[11] = '小米'
dic.setdefault(11,'華爲') #1.先去字典中經過11這個鍵去查有沒有 就是None #2.若是是值 就不進行添加 #3.若是是None,就添加返回的是添加的值
刪:it
del dic #刪除整個字典 del dic[鍵] #經過鍵刪除 dic.pop('鍵') #pop經過指定鍵刪除 pop也有返回值 返回的被刪除的值 dic.clear() #清空 dic.popitem() #隨機刪除 python3.6刪除最後一個 python3.5中隨機刪除
改:class
dic.update(字典)更新 被更新的內容若是在要更新的內容中那值就回覆蓋 兩個字典,都沒同樣的是合併 dic2['33'] = 'tsp'是字典中沒有的時候才叫增,若是字典中這個鍵存在就叫作修改
查:
print(dic2['33']) #經過鍵查找 若是鍵不存在 就報錯 print(dic2.get(2)) #經過鍵查找 若是不存在不會報錯返回None print(dic.setdefault('33')) #不存在返回None
其餘操做:
dic2 = {'33':'gg','66':'pp'} for i in dic2: print(i) for i in dic2: print(dic2.get(i)) print(dic2.keys())高仿列表dic_key(['33','66'])不能使用下標 print(dic2.vaules())高仿列表dic_value(['gg','pp'])不能使用下標 for i in dic2.values(): print(i) for i in dic2.items(): print(i) for k,v in dic.items(): print(k) print(v)
解構:
a,b,c = 1,2,3 '456' [7,8,9] (7,8,9) {'1':8,'2':9,'3':0}
# 面試題 用一行交換a,b的值 a = 10 b = 20 a,b = b,a print(a,b)
keys() #獲取全部的鍵 高仿列表 values() #獲取全部的值 高仿列表 item() #獲取鍵值 以元組的形式顯示
補充:
dic2 = {'33':'gg','66':'pp'} ret = dic2.get('qq',你傻啊,沒有還要拿) ret = dic2.pop('qq','沒有') 這是坑: dic3 =dict.fromkeys([1,2,3,4,5,6],[1,2,3]) print(dic3) 第一個參數是鍵 要是可迭代的對象 第二個參數是值,值是無所謂是由於建立的新字典的值用的都是一個值是一個可變數據類型
字典的嵌套:
dic1 = dic['陳冠希']['阿嬌']
集合:
set 集合 存儲數據 自然去重 無序不能使用索引 se = {1,2,3,45,234,12,32,12} 列表有點 沒有值的字典 面試題 lst = [1,2,3,4,12,3,4]去重 print(list(set(lst))) se.add(6) se.update('123') 可迭代的對象 se.clear se.pop se.remove(4) 經過內容刪除
s1 = {'劉能','趙四','皮革廠'} s2 = {'劉科長','馮鄉長','皮革廠'} s1 & s2 交集 s1 | s2 並集 s1 - s2 差集 不顯示共有的 s1 ^ s2 反差集 顯示不共有的 s1 = frozenset(['','','','']) print(s1)