iT邦幫忙

2022 iThome 鐵人賽

DAY 8
0
  • 建立字典
  • 字典長度
  • 訪問字典中的項目
  • 添加項目到字典中
  • 更改字典中的項目值
  • 確認字典中是否有某個鍵
  • 從字典中移除鍵值
  • 轉換成字典檢視
  • 清除字典內容
  • 刪除整個字典
  • 複製字典

這篇文章是閱讀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的方式可以新增keyvalue到字典中:

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

上一篇
【Day 7】集合
下一篇
【Day 9】條件判斷
系列文
從前端角度看30天學Python30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言