這篇文章是閱讀Asabeneh的30 Days Of Python: Day 8 - Dictionaries後的學習筆記與心得。
字典(dictionary)型別是無順序(unordered)、可更改(mutable)、並且鍵值配對(key-value paired)的資料組合。類似JavaScript(以下簡稱JS)的物件(object)。
跟JS物件一樣,使用大括弧{}
或是使用Python內建函式dict()
:
empty_dict = dict()
# 建立帶有起始值的字典
person = {
'first_name': 'John',
'last_name': 'Doe',
'age': 30,
}
使用len(dict)
函式,回傳鍵值成對('key: value' pairs)的總數:
person = {
'first_name': 'John',
'last_name': 'Doe',
'age': 30,
}
print(len(person)) # 3
透過dict['key']
的方式以鍵(key)取得項目值(value),如果key
不存在的話,會產生KeyError:
person = {
'first_name': 'John',
'last_name': 'Doe',
'age': 30,
}
print(person['first_name']) # 'John'
print(person['gender']) # KeyError
透過get(key)
方法取得項目值,若key
不存在,會回傳None:
person = {
'first_name': 'John',
'last_name': 'Doe',
'age': 30,
}
print(person.get('first_name')) # 'John'
print(person.get('gender')) # None
透過dict['key'] = value
的方式可以新增key
與value
到字典中:
person = {
'first_name': 'John',
'last_name': 'Doe',
'age': 30,
}
person['job_title'] = 'programmer'
print(person) # {'first_name': 'John', 'last_name': 'Doe', 'age': 30, 'job_title': 'Programmer'}
透過dict['key'] = new_value
的方式可以更改key
原本配對的值:
person = {
'first_name': 'John',
'last_name': 'Doe',
'age': 30,
}
person['age'] = 18
print(person) # {'first_name': 'John', 'last_name': 'Doe', 'age': 18}
使用in
運算符,會回傳布林值,若字典中有該鍵(key),回傳True
,否則回傳False
:
person = {
'first_name': 'John',
'last_name': 'Doe',
'age': 30,
}
print('last_name' in person) # True
print('name' in person) # False
pop(key)
方法移除掉傳入的key
與其配對的值(value),會回傳移除的值,若無鍵不存在,則產生KeyError。popitem()
方法移除字典中最後一個項目,移除最後一個項目,並以元組(key, value)
的形式回傳移除項目的鍵與值,若字典中無項目則產生KeyError。del
移除指定的鍵與其配對的值,若無該鍵則產生KeyError。person = {
'first_name': 'John',
'last_name': 'Doe',
'age': 30,
'job_title': 'Programmer'
}
person.pop('last_name') # 'Doe'
person.popitem() # ('job_title', 'programmer')
del person['age']
關於字典檢視(dictionary view)的說明
這是一個可以被遍歷的物件,相關函式與方法
使用items()
方法,會回傳基於該字典鍵與值的字典檢視,類似JS中Object.entries(obj)
:
person = {
'first_name': 'John',
'last_name': 'Doe',
'age': 30,
}
print(person.items()) # dict_items([('first_name', 'John'), ('last_name', 'Doe'), ('age', 30)])
使用keys()
方法,會回傳基於該字典鍵(keys)的字典檢視,類似JS中Object.keys()
:
person = {
'first_name': 'John',
'last_name': 'Doe',
'age': 30,
}
print(person.keys()) # dict_keys(['first_name', 'last_name', 'age'])
使用values()
方法,會回傳基於該字典值(values)的字典檢視,類似JS中Object.values()
:
person = {
'first_name': 'John',
'last_name': 'Doe',
'age': 30,
}
print(person.values()) # dict_values(['John', 'Doe', 30])
使用clear()
方法將字典中的項目都清除:
person = {
'first_name': 'John',
'last_name': 'Doe',
'age': 30,
}
person.clear()
print(person) # {}
使用del
函式可以刪除該字典物件:
person = {
'first_name': 'John',
'last_name': 'Doe',
'age': 30,
}
del person
print(person) # NameError
使用copy()
方法將回傳一個基於該字典的新字典;如此能避免修改到原始的字典:
person = {
'first_name': 'John',
'last_name': 'Doe',
'age': 30,
}
person_copy = person.copy()
print(person_copy is person) # False - the refs are different