[PYTHON] Dict 篇
< $Assign$ >
# 指定空 dict
d = {}
d = dict()
# 指定有內容的 dict
d = {'a': 1, 'b': 2}
# a -> 1, b -> 2
d = {chr(i): i for i in range(65, 91)} # ASCII 表
# A -> 65, B -> 66, C -> 67, ..., Z -> 90
< $Usage$ >
名詞:
- $key$:關鍵字,欲存取對應值的關鍵字。$key$ 必須是 $hashable$(如:$list$ 不可當 $key$)。
- $value$:值,關鍵字對應的值。$value$ 可為任意型態。
d = {}
d['a'] = 1 # a -> 1
print(d) # {'a': 1}
d['b'] = 2 # b -> 2
print(d) # {'a': 1, 'b': 2}
d = {}
d['a'] = 1 # a -> 1
print(d) # {'a': 1}
d['a'] = 2
print(d) # {'a': 2}
d['a'] += 1
print(d) # {'a': 3}
d = {'a': 1, 'b': 2}
print(d['a']) # 1
print(d['b']) # 2
print(d['c']) # KeyError: 'c'
< $Method$ >
- $clear()$:從 $dict$ 刪除所有項目。
d = {'a': 1, 'b': 2}
d.clear()
print(d) # {}
- $copy()$:回傳一個淺複製的 $dict$。
# 沒有使用 copy
d1 = {'a': 1, 'b': 2}
d2 = d1
d2['a'] = 10
print(d1) # {'a': 10, 'b': 2}
print(d2) # {'a': 10, 'b': 2}
# 使用 copy
d1 = {'a': 1, 'b': 2}
d2 = d1.copy()
d2['a'] = 10
print(d1) # {'a': 1, 'b': 2}
print(d2) # {'a': 10, 'b': 2}
- $keys()$:回傳一個所有 $keys$ 的 $dict\_keys$(類似 $list$ )。
d = {'a': 1, 'b': 2}
print(d.keys()) # dict_keys(['a', 'b'])
- $values()$:回傳一個所有 $values$ 的 $dict\_values$(類似 $list$)。
d = {'a': 1, 'b': 2}
print(d.values()) # dict_values([1, 2])
- $get(key)$:則回傳 $key$ 在 $dict$ 裡面對應的 $value$。若 $key$ 不在 $dict$ 裡面,則會回傳 $None$。
d = {'a': 1, 'b': 2}
print(d.get('a')) # 1
print(d.get('c')) # None
- $items()$:回傳一個所有 $keys$ 和 $values$(每組數據是 $tuple$ 型態) 的 $dict\_items$(類似 $list$)。
d = {'a': 1, 'b': 2}
print(d.items()) # dict_items([('a', 1), ('b', 2)])
- $pop(key)$:則刪除該組 $key$ 和 $value$,並回傳 $value$。若 $key$ 不在 $dict$ 裡面,則會發生錯誤。
d = {'a': 1, 'b': 2}
print(d.pop('a')) # 1
print(d) # {'b': 2}
print(d.pop('c')) # KeyError: 'c'
- $popitem()$:刪除並返回最後加入(也就是 $dict$ 的最後一項)的 $(key, \ value)$($tuple$ 型態)。若 $dict$ 沒有元素,則會發生錯誤。
d = {'a': 1, 'b': 2}
print(d.popitem()) # ('b', 2)
print(d) # {'a': 1}
print(d.popitem()) # ('a', 1)
print(d) # {}
print(d.popitem()) # KeyError: 'popitem(): dictionary is empty'
< $Function$ >
- $len(dict)$:回傳 $dict$ 的長度。
d = {'a': 1, 'b': 2}
print(len(d)) # 2
< $Traversal$ >
- 直接迭代,用 $key$、$dict[key] \ = \ value$ 方式呈現。
d = {'a': 1, 'b': 2}
for key in d: # d 相當於 d.keys()
print('key:', key, 'value:', d[key])
'''
key: a value: 1
key: b value: 2
'''
- 用 $key, \ value$ 迭代 $dict\_items()$。
d = {'a': 1, 'b': 2}
for key, value in d.items():
print('key:', key, 'value:', value)
'''
key: a value: 1
key: b value: 2
'''
- 用 $zip()$ 把 $d.keys()$ 和 $d.values()$ 壓縮起來一起迭代。
d = {'a': 1, 'b': 2}
for key, value in zip(d.keys(), d.values()):
print('key:', key, 'value:', value)
'''
key: a value: 1
key: b value: 2
'''
以上,
若有更好的想法歡迎提出哦!
留言
張貼留言