iT邦幫忙

2021 iThome 鐵人賽

DAY 13
1

前言

dict 用於需要查表的時候非常方便,今天要來介紹一下 dict 的用法!

Dictionary

  • 儲存 keyvalue 對應的資料
  • 資料沒有順序性,和 set 一樣
  • dict[key] 可以讀取 key 對應的 value,若 key 不存在於 dict 則會出現 KeyError 的錯誤導致程式中斷
  • 一整組 keyvalue 稱為一個 item

建立 dict

dict1 = {}     #創建一個空的 dict
print(type(dict1))
dict2 = {'a':'A', 'b':'B', 'c':'C'}    # 小寫是 key 大寫是 value
print(type(dict2))
print(dict2)
print(dict2.items())

取得 value

  • dict[]:取得特定 key 對應的 value,找錯 'key' 會終止程式

    dict2 = {'a':'A', 'b':'B', 'c':'C'}
    print(dict2['a'])   # 取得的值為 A
    print(dict2['d'])   # KeyError: dict2 內沒有 'd' 所以到這裡停止
    
  • dict.get(key):取得特定 key 對應的 value 不會終止程式

    dict2 = {'a':'A', 'b':'B', 'c':'C'}
    print(dict2.get('a'))   # 取得的值為 A 
    print(dict2.get('d'))   # key 沒有 'd' 所以輸出是 None
    
  • dict.values:取得所有 value

    dict2 = {'a':'A', 'b':'B', 'c':'C'}
    print(dict2.values())
    

取得 key

  • dict.keys()

    dict2 = {'a':'A', 'b':'B', 'c':'C'}
    print(dict2.keys())
    

新增 or 改變 dict 內的元素

  • dict[key] = value:若 key 本來就存在,會改變對應的 value,若不存在則會新增這組 keyvalue

    dict2 = {'a':'A', 'b':'B', 'c':'C'}
    dict2['a'] = 'XXX'    # 把 'a' 對應的 value 改為 XXX
    print(dict2)
    dict2['d'] = 'D'      # 創建一個 'd' 的 key
    print(dict2)
    

  • dict.update():括號內要放一組 {key : value}

    dict2 = {'a':'A', 'b':'B', 'c':'C'}  
    dict2.update({'a':'FF'})
    dict2.update({'d':'DDD'})
    print(dict2)
    

刪除 dict 內的元素

  • dict.pop(key):移除括號內的 key 對應的 value,括號 () 不能是空的!

    dict2 = {'a':'A', 'b':'B', 'c':'C'}
    dict2.pop('b')    # 括號內一定要放 key,不然會錯誤
    print(dict2)
    

  • dict.popitem():移除最後一個 dict 內的元素,括號 () 內要是空的

    dict2 = {'a':'A', 'b':'B', 'c':'C'}
    dict2.popitem()
    print(dict2)
    

  • dict.clear():清除 dict 變為空的 dictdict 還在,還可以再重新新增元素進去。

    dict2 = {'a':'A', 'b':'B', 'c':'C'}
    dict2.clear()
    print(dict2)
    

  • del:直接刪除整個 dict,無法 print 或把值放進去,取值的話會 Error。

    dict2 = {'a':'A', 'b':'B', 'c':'C'}
    del dict2
    

迴圈

  • 直接跑迴圈的話取出的值是 key

    dict2 = {'a':'A', 'b':'B', 'c':'C'}
    for x in dict2:
        print(x, end = ' ')
    

    或用 dict.keys() 記得加 s

    dict2 = {'a':'A', 'b':'B', 'c':'C'}
    for x in dict2.keys():
        print(x, end = ' ')   
    

  • 要取得 value 要加 dict[]

    dict2 = {'a':'A', 'b':'B', 'c':'C'}
    for x in dict2:
        print(dict2[x], end = ' ')
    

    或用 dict.values() 記得加 s

    dict2 = {'a':'A', 'b':'B', 'c':'C'}
    for x in dict2.values():
        print(x, end = ' ')
    

  • 把整個 item 都取出

    dict2 = {'a':'A', 'b':'B', 'c':'C'}
    for x, y in dict2.items():
        print(x, y)
    

複製 dict

  • dict2 = dict1.copy():兩個 dict id 不會一樣,不會互相影響

    dict2 = {'a':'A', 'b':'B', 'c':'C'}
    dddd = dict2.copy()
    print(id(dict2))
    print(id(dddd))
    print(dddd)
    

  • dict2 = dict1:id 會一樣,會互相影響

    dict2 = {'a':'A', 'b':'B', 'c':'C'}
    dddd = dict2
    print(id(dict2))
    print(id(dddd))
    print(dddd)
    

  • dict() 複製:id 不會一樣

    dict2 = {'a':'A', 'b':'B', 'c':'C'}
    dddd = dict(dict2)
    print(id(dict2))
    print(id(dddd))
    print(dddd)
    

待續...


上一篇
【Day 12】Set 介紹
下一篇
【Day 14】List Comprehension 列表生成式
系列文
宇宙 69 大魔王的 python 世界30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言