字典和集合

small_caier發表於2018-11-30

1. 什麼是字典
  字典是用{}表示,以key:value的形式來儲存資料的,其查詢效率比較高

  坑:

    字典儲存資料時是用雜湊值來儲存的,演算法不能變(python的)

  資料必須是可雜湊的(不可變的),字典中的key必須是可雜湊的(不可變的)

dic = {"jay":"周杰倫", "jj": "林俊杰", "jolin":"蔡依林"}
print(dic[`jay`]) # 周杰倫
dic[`jay`] = "麻花藤"
print(dic)#{`jay`: `麻花藤`, `jj`: `林俊杰`, `jolin`: `蔡依林`}

2. 字典的增刪改查
  1. 新增
  dic[新key] = 值

dic = {"義大利": "李雲龍", "美國": "美國往事"}
dic["日本"] = "東京審判"  # 新key表示新增
dic[`韓國`] = "釜山行"
print(dic)#{`義大利`: `李雲龍`, `美國`: `美國往事`, `日本`: `東京審判`, `韓國`: `釜山行`}

 

  setdefault()

  有新增功能,dic.setdefault(“key”,”value”)

  如果key是存在的則不新增.

  流程:判斷你給的key是否存在於字典中,如果存在不新增.如果不存在,執行新增的操作.

2. 刪除
  pop(key)

dic = {"張藝謀":"紅高粱", "李安":"斷臂山", "陳凱歌":"霸王別姬", "郭德綱":"祖宗十九代"}
dic.pop("郭德綱") # pop(key)  刪除郭德綱
dic.popitem() # 隨機刪除一項. 在python早期版本  字典是無序的.
del dic["李安"]  del dic["key"] 刪除指定一項

  dic.clear()  清空

3. 修改
dic[老key] = 值

dic = {"jay":"周杰倫", "jj": "林俊杰", "jolin":"蔡依林"}
dic[`jay`] = "麻花藤"
print(dic)#{`jay`: `麻花藤`, `jj`: `林俊杰`, `jolin`: `蔡依林`}

update() 更新字典

dic1 = {"趙四":"劉曉光", "劉能":"王曉利", "王木生":"範偉"}
dic2 = {"趙四":"寶寶", "劉能":"萌萌", "皮校長":"皮長山"}

dic1.update(dic2) # 把dic2懟到dic1裡面. 把dict2中的內容更新到dic1
print(dic1)
print(dic2)
#{`趙四`: `寶寶`, `劉能`: `萌萌`, `王木生`: `範偉`, `皮校長`: `皮長山`}
#{`趙四`: `寶寶`, `劉能`: `萌萌`, `皮校長`: `皮長山`}

4. 查詢

dic[key]  直接使用key獲得value,如果key不存在則報錯
get(key, 值)  dic.get(key,值)  如果輸入沒有的key則會返回值  如果沒有值 則返回預設的None
setdefault(key, value) 

#第一個功能是新增(當key不存在). 第二個功能是查詢(根據你給的key查詢)
# 整個執行流程: 判斷給的key是否存在. 如果存在. 就不執行新增流程.直接查詢出這個key對
#應的value
# 如果key不存在. 先執行新增操作. 再使用key把對應的value查詢出來
dic1 = {"趙四":"劉曉光", "劉能":"王曉利", "王木生":"範偉"}
ret = dic1.setdefault("皮長山", "皮校長")
print(ret) # 皮校長
ret = dic1.setdefault("王木生", "寶寶")
print(ret) # 範偉

5. 遍歷,字典是一個可迭代物件

dic = {"趙四":"劉曉光", "劉能":"王曉利", "王木生":"範偉"}
# 1. 使用for迴圈直接遍歷字典的key
for key in dic:
     print(key)
     print(dic[key])

# 2. 可以使用字典的items()+解構可以直接獲取到key和value
for k, v in dic.items():
     print(k)
     print(v)

3. 字典的相關操作

1. keys() 獲取到所有的鍵

2. values() 獲取到所有的值

3. items() 拿到所有的鍵值對

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

 

4. 字典的巢狀
字典的巢狀. 字典套字典

5. 集合(不重要). 去重複
集合中的元素是不重複的. 必須是可雜湊的(不可變), 字典中的key
空集合:set()
空元組:tuple()
空列表:list()
非空集合: {123}集合, 集合其實就是不存value的字典

相關文章