Python dict的取值

 

 

dict的初始化

dict就是一種{key:value}的資料型態,其中key必須為不可變的物件,例如可變長度的list就無法作為key值。

#宣告一個空的dict
dict_a = {}

#宣告一個有初始值的dict
dict_a = {'x':1, 'y':2, 'z':3}
dict_b = {'x':1, 'y':[1,2], 'z':[1,2,3]}

#如果使用tuple來作為key
dict_a = {('x','y','z'):1, 'y':2, 'z':3}

 

修改或讀取dict

取值

直接透過dict[Key]來取值

dict_a = {'x':1, 'y':2, 'z':3}

print(dict_a['x'])
>> 1

get()

透過get(),讀取一個特定Key值時,

  • 如果找的到這個Key值,那就回傳該Key的Value
  • 如果找不到這個Key值,
    • 如果沒有指定預設回傳值,就回傳None
    • 如果有指定預設回傳值,就回傳指定的回傳值

以下為這三種情況的範例。

dict_a = {'x':1, 'y':2, 'z':3}

print(dict_a.get('x', 2)) 
print(dict_a)
>> 1
>> {'x':1, 'y':2, 'z':3}

print(dict_a.get('m'))
print(dict_a)
>> None
>> {'x':1, 'y':2, 'z':3}

print(dict_a.get('m', 5)) 
print(dict_a)
>> 5
>> {'x':1, 'y':2, 'z':3}

setdefault()

透過setdefault(),讀取一個特定Key值時,同時會帶入預設的回傳值,這個預設的回傳值是在透過該Key值找不到資料時,才會回傳的Value。

  • 如果找的到這個Key值,那就回傳該Key的Value
  • 如果找不到這個Key值,就回傳指定的預設值。同時,會將這個{Key:Value}塞入dict中。

以下為這兩種情況的範例。

dict_a = {'x':1, 'y':2, 'z':3}

print(dict_a.setdefault('x',100))
print(dict_a)
>> 1
>> {'x':1, 'y':2, 'z':3}

print(dict_a.setdefault('w',100))
print(dict_a)
>> 100
>> {'x': 1, 'y': 2, 'z': 3, 'w': 100}