[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
'''
以上,
若有更好的想法歡迎提出哦!
留言
張貼留言