1. 程式人生 > >python裡的字典和集合

python裡的字典和集合

一.字典

1.字典的定義

字典是不可變的,是用hash值來儲存的.字典的key必須是不可變的(可雜湊)

dict = {key1:value1 , key2:value2}

2.字典的增刪改查

直接dict[newkey]="newvalue"

dict.setdefault("key","value")

setdefault執行流程:

判斷你的key是否存在,如果已經存在就不再新增.如果不存在,執行新增操作

dic = {"jay":"周杰倫","jj":"林俊杰"}
dic["j"] = "我也不知道"   #dic[newkey] = "newvalue"
#dic.setdefault("j","我也不知道")
print(dic)

dict.pop("key")   指定刪除key和對應的value

dict.popitem()    從後往前刪 在早期字典是無序的,所以早期是隨機刪除

del dict[key]        指定刪除key和對應的value

dict.clear()           清空字典

dic = {"張藝謀":"紅高粱","李安":"斷背山","陳凱歌":"霸王別姬"}
dic.pop("張藝謀")   #指定刪除
dic.popitem()     #刪除最後一個   python早期版本是無序的
del dic["李安"]    #指定刪除
dic.clear()    #清空
print(dic)

dict[oldkey] = newvalue

dict1.update(dict2)  #把dict2的內容更新到dict1中

直接使用key就能查到value

dict.get(key,None)  當key存在查詢value,不存在返回None(None可以換)

dict.setdefalut()  第一個功能是新增(當key不存在).第二個功能是查詢(當key存在)

setdefalut整個執行流程:

判斷給的key是否存在. 如果存在. 就不執行新增流程.直接查詢出這個key對應的value
如果key不存在. 先執行新增操作. 再使用key把對應的value查詢出來

dic = {"劉能":"王小利","趙四":"劉曉光","王木生":"範偉"}
print(dic["劉能"])
print(dic.get("王木生"))
print(dic.get("劉能呢","沒有"))
setdefault     兩個功能    新增和查詢
檢查是否有key  如果沒有,先新增到字典,再使用key查詢value
                          如果有key,直接查詢key的valu
s = dic.setdefault("趙四四","流光")
print(s)

3.字典的巢狀

一層一層尋找,和列表一樣

4.字典的遍歷

直接for迴圈

for key in dic: # 直接迴圈字典拿到的是key, 有key直接拿value
     print(key)
     print(dic[key])

dict.keys()     拿到字典的每一個key

dict.values()    拿到字典的每一個value

dict.items()    拿到字典的所有鍵值對

 

 for k, v in dic.items(): # 遍歷字典最簡單的方案
      print(item) # ('趙四', '劉曉光')
      k, v = item # 解構
      k = item[0]
      v = item[1]
      print(k, v)

 

遍歷字典的兩種方法:

dic = {"週五":"等著放假","週六":"放假","週日":"等著上課"}
#遍歷字典的兩種方法
for i in dic:
    print(i,dic[i])   # i是遍歷到的key  dic[i]是對應的value
for k,v in dic.items():  #dic.items()
                         拿到的是[('週五', '等著放假')]
                          解包
    print(k,v)

二.set集合

1.set集合的用處

用的最多的就是去重複

lst = ["麻將", "牌九", "骰子", "撲克", "骰子", "撲克", "撲克", "撲克", ]
print(list(set(lst)))

2.set集合的增刪改查

s.add(元素)     直接新增      set是無序的

s.update()        迭代新增

s = {"劉嘉玲","趙本山","羅納爾多","劍神"}
s.add("劍聖")
s.update("劍聖")  #迭代新增
s.update(["劍聖"]

s.pop()     隨機刪除一個

s.remove(元素)    指定刪除一個

s.pop()   #因為set是無序的 ,所以隨機刪.  ()裡沒有arg
s.remove("劍神")   #指定刪

只能先刪除再新增

可迭代,用for迴圈