1. 程式人生 > 實用技巧 >Python中的字典

Python中的字典

python中的字典

字典格式:

d = {key1 : value1, key2 : value2}
  • 鍵是唯一且不可變的
  • 值可以取任何資料型別

字典的基本操作

訪問字典裡的值
>>> tel = {'jack': 4098, 'sape': 4139}
>>> tel['jack']
4098
>>>
獲取字字典中所有鍵的列表
>>> tel
{'jack': 4099, 'guido': 4127, 'irv': 4127}
>>> list(tel)
['jack', 'guido', 'irv']
修改字典
# 新增元素
>>> tel['guido'] = 4127
# 修改鍵對應的值
>>> tel['jack'] = 4099
>>> tel
{'jack': 4099, 'sape': 4139, 'guido': 4127}
刪除字典元素
# 使用del函式刪除字典元素
>>> del tel['sape']
>>> tel
{'jack': 4099, 'guido': 4127}

字典內建函式和方法

內建函式
  • len(dict) - 計算欄位元素個數
>>> tel
{'jack': 4099, 'guido': 4127, 'irv': 4127}
>>> len(tel)
3
  • str(dict) - 輸出欄位,格式為可列印的字串
>>> tel
{'jack': 4099, 'guido': 4127, 'irv': 4127}
>>> str(tel)
"{'jack': 4099, 'guido': 4127, 'irv': 4127}"
  • type(variable) - 當變數為字典時,返回字典型別
>>> tel
{'jack': 4099, 'guido': 4127, 'irv': 4127}
>>> type(tel)
<class 'dict'>
內建方法
  • key in d - 如果d中存在鍵key則返回True,否則返回False
>>> tel
{'jack': 4099, 'guido': 4127, 'irv': 4127}
>>> 'jack' in tel
True
  • key not in d
  • copy() - 返回原字典的淺拷貝
>>> tel
{'jack': 4099, 'guido': 4127, 'irv': 4127}
>>> tel1 = tel.copy()
>>> tel1
{'jack': 4099, 'guido': 4127, 'irv': 4127}
  • classmethod fromkeys(iterable[, value]) - fromkeys()是一個返回新字典的類方法,value值預設為None,所有值都只引用一個單獨的例項
# 未傳入value,使用預設值None
>>> tel
{'jack': 4099, 'guido': 4127, 'irv': 4127}
>>> tel.fromkeys(tel)
{'jack': None, 'guido': None, 'irv': None}

# 傳入value,所有值都使用value
>>> tel
{'jack': 4099, 'guido': 4127, 'irv': 4127}
>>> tel.fromkeys(tel, 2333)
{'jack': 2333, 'guido': 2333, 'irv': 2333}
  • get(key[, default]) - 如果key存在於字典中則返回key的值,否則返回default
>>> tel.get('jack', None)
4099
>>> print(tel.get('rose', None))
None
  • items() - 以列表返回可遍歷的(key, value)元組陣列
>>> tel
{'jack': 4099, 'guido': 4127, 'irv': 4127}
>>> tel.items()
dict_items([('jack', 4099), ('guido', 4127), ('irv', 4127)])
  • keys() - 返回由字典鍵組成的一個迭代器,可以用list()轉換成列表
>>> tel
{'jack': 4099, 'guido': 4127, 'irv': 4127}
>>> tel.keys()
dict_keys(['jack', 'guido', 'irv'])
>>> list(tel.keys())
['jack', 'guido', 'irv']
  • pop(key[, default]) - 如果key存在於字典中則返回key的值,否則返回default
>>> tel
{'jack': 4098, 'guido': 4127, 'irv': 4127}
>>> tel.pop('jack')
4098
>>> tel
{'guido': 4127, 'irv': 4127}
  • popitem() - 從字典中移除並返回一個(鍵,值)對。鍵值對會按LIFO的順序被返回。
>>> tel
{'guido': 4127, 'irv': 4127, 'jack': 4098}
>>> tel.popitem()
('jack', 4098)
>>> tel
{'guido': 4127, 'irv': 4127}
  • reversed(d) - 返回一個逆序獲取字典鍵的迭代器
>>> tel
{'jack': 4098, 'guido': 4127, 'irv': 4127}
>>> print(list(reversed(tel)))
['irv', 'guido', 'jack']
  • setdefault(key[, default]) - 如果字典存在鍵key,返回它的值。否則,插入值為default的鍵key
>>> tel
{'jack': 4098, 'guido': 4127, 'irv': 4127}
>>> tel.setdefault('jack')
4098
>>> tel.setdefault('rose', 4000)
4000
>>> tel
{'jack': 4098, 'guido': 4127, 'irv': 4127, 'rose': 4000}
  • update([other]) - 使用來自other的鍵/值更新字典,覆蓋原有的鍵。
>>> tel
{'jack': 4098, 'guido': 4127, 'irv': 4127, 'rose': 4000}
>>> tel1 = {'irv': 5000, 'dada': 2000}
>>> tel.update(tel1)
>>> tel
{'jack': 4098, 'guido': 4127, 'irv': 5000, 'rose': 4000, 'dada': 2000}
  • values() - 返回由字典值構成的一個新檢視
>>> tel
{'jack': 4098, 'guido': 4127, 'irv': 5000, 'rose': 4000, 'dada': 2000}
>>> tel.values()
dict_values([4098, 4127, 5000, 4000, 2000])
  • clear() - 移除字典中的所有元素
>>> tel
{'jack': 4098, 'guido': 4127, 'irv': 5000, 'rose': 4000, 'dada': 2000}
>>> tel.clear()
>>> tel
{}

參考文章