Python中的字典是一種非常有用和高效的數據結構,它可以存儲任意數量的鍵值對,並且可以根據鍵來快速獲取對應的值。
一、字典的定義和基本操作
字典是一種映射類型的數據結構,用花括號{}表示,每個鍵-值對用冒號:分隔,不同的鍵-值對之間用逗號,分隔。下面是一個簡單的字典示例:
person = { 'name': 'Alice', 'age': 25, 'occupation': 'Engineer', 'company': 'ABC Inc.' }
可以通過下標的方式獲取字典中的值,也可以使用get()方法獲取值。例如:
print(person['name']) # 輸出:Alice print(person.get('age')) # 輸出:25
字典中的值可以被修改或添加,也可以通過pop()方法刪除,例如:
person['age'] = 26 # 修改值 person['city'] = 'New York' # 添加新鍵值對 print(person) # 輸出:{'name': 'Alice', 'age': 26, 'occupation': 'Engineer', 'company': 'ABC Inc.', 'city': 'New York'} person.pop('occupation') # 刪除鍵值對 print(person) # 輸出:{'name': 'Alice', 'age': 26, 'company': 'ABC Inc.', 'city': 'New York'}
二、字典的遍歷
Python提供了多種方式遍歷字典,比如可以使用for循環遍歷鍵,然後通過鍵檢索值。例如:
for key in person: print(key, person[key])
還可以使用.items()方法同時遍歷鍵和值,例如:
for key, value in person.items(): print(key, value)
三、字典的高級操作
除了上述基本操作,Python中的字典還支持一些高級操作。
一、字典的嵌套
字典可以嵌套使用,例如:
contacts = { 'Alice': {'phone': '123456', 'email': 'alice@example.com'}, 'Bob': {'phone': '7890', 'email': 'bob@example.com'}, 'Charlie': {'phone': '456789', 'email': 'charlie@example.com'} }
可以通過兩層下標獲取嵌套字典中的值,例如:
print(contacts['Alice']['email']) # 輸出:alice@example.com
二、字典的推導式
Python中的字典推導式可以根據條件創建字典。例如,可以創建一個新字典,其中只包含年齡大於等於20歲的人員,示例代碼如下:
person = { 'Alice': 25, 'Bob': 18, 'Charlie': 30, 'David': 21 } new_person = {name: age for name, age in person.items() if age >= 20} print(new_person) # 輸出:{'Alice': 25, 'Charlie': 30, 'David': 21}
三、字典的內置方法
Python中的字典還有一些內置方法,例如update()方法可以使用一個字典更新另一個字典,setdefault()方法可以獲取或設置指定鍵的值,如果鍵不存在,則設置默認值。例如:
person = {'name': 'Alice', 'age': 25, 'city': 'New York'} person2 = {'name': 'Bob', 'age': 30} person.update(person2) # 更新 person 字典 print(person) # 輸出:{'name': 'Bob', 'age': 30, 'city': 'New York'} print(person.setdefault('email', 'alice@example.com')) # 輸出:alice@example.com,因為 email 鍵不存在,設置默認值並返回
四、小結
綜上所述,Python中的字典是一種非常有用和高效的數據結構。它可以存儲任意數量的鍵值對,並且可以根據鍵來快速獲取對應的值。同時,Python還提供了多種遍歷字典的方式和一些高級操作,例如字典的嵌套、推導式和內置方法等。如果你經常需要使用鍵值對數據結構,那麼字典將是你非常實用的工具之一。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/249602.html