[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():回傳一個所有 keysdict_keys(類似 list )。
d = {'a': 1, 'b': 2}
print(d.keys()) # dict_keys(['a', 'b'])
  • values():回傳一個所有 valuesdict_values(類似 list)。
d = {'a': 1, 'b': 2}
print(d.values()) # dict_values([1, 2])
  • get(key):則回傳 keydict 裡面對應的 value。若 key 不在 dict 裡面,則會回傳 None
d = {'a': 1, 'b': 2}
print(d.get('a')) # 1
print(d.get('c')) # None
  • items():回傳一個所有 keysvalues(每組數據是 tuple 型態) 的 dict_items(類似 list)。
d = {'a': 1, 'b': 2}
print(d.items()) # dict_items([('a', 1), ('b', 2)])
  • pop(key):則刪除該組 keyvalue,並回傳 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 >
  • 直接迭代,用 keydict[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
'''



以上,
若有更好的想法歡迎提出哦!

留言

熱門文章