一、字典的概述
Python中的字典是一種高效的數據結構,用於存儲和訪問鍵-值對。每個鍵-值對都是一個項(item),通過鍵(key)來訪問相應的值(value)。字典是一種可變的數據類型,可以通過添加、修改、刪除操作來改變它的內容。字典的實現是通過哈希表(hash table)實現的,可以實現O(1)的隨機訪問。
>>> # 創建一個字典
>>> my_dict = {'apple': 5, 'banana': 3, 'orange': 2}
>>> # 訪問字典中的值
>>> print(my_dict['apple'])
5
>>> # 添加一個項
>>> my_dict['pear'] = 4
>>> # 修改一個項
>>> my_dict['banana'] = 6
>>> # 刪除一個項
>>> del my_dict['orange']
>>> # 遍歷字典的鍵
>>> for key in my_dict:
... print(key)
...
apple
banana
pear
>>> # 遍歷字典的鍵和值
>>> for key, value in my_dict.items():
... print(key, value)
...
apple 5
banana 6
pear 4
與列表、元組等序列類型不同,字典沒有順序的概念。在迭代時,鍵-值對的順序是隨機的,並且可能會隨著字典的修改而改變。
二、字典的創建和基本操作
字典可以通過花括弧{}或者dict()函數創建。字典的鍵必須是可哈希(hashable)的,這意味著它們可以作為哈希表中的索引。
字典的基本操作包括添加、修改、刪除、鍵的判斷和訪問。
1. 創建字典
字典可以通過花括弧{}或者dict()函數創建,如下所示:
>>> # 使用花括弧創建字典
>>> my_dict = {'apple': 5, 'banana': 3, 'orange': 2}
>>> print(my_dict)
{'apple': 5, 'banana': 3, 'orange': 2}
>>> # 使用dict()函數創建字典
>>> my_dict = dict(apple=5, banana=3, orange=2)
>>> print(my_dict)
{'apple': 5, 'banana': 3, 'orange': 2}
2. 添加、修改和刪除項
使用索引來添加、修改和刪除項,如下所示:
>>> my_dict = {'apple': 5, 'banana': 3, 'orange': 2}
>>> # 添加一個項
>>> my_dict['pear'] = 4
>>> print(my_dict)
{'apple': 5, 'banana': 3, 'orange': 2, 'pear': 4}
>>> # 修改一個項
>>> my_dict['banana'] = 6
>>> print(my_dict)
{'apple': 5, 'banana': 6, 'orange': 2, 'pear': 4}
>>> # 刪除一個項
>>> del my_dict['orange']
>>> print(my_dict)
{'apple': 5, 'banana': 6, 'pear': 4}
3. 鍵的判斷、訪問和遍歷
使用in操作符判斷鍵是否在字典中,通過索引訪問字典中的某個鍵的值,可以使用items()遍歷鍵-值對。
>>> my_dict = {'apple': 5, 'banana': 3, 'orange': 2}
>>> # 判斷鍵是否在字典中
>>> print('apple' in my_dict)
True
>>> print('pear' in my_dict)
False
>>> # 訪問字典中的某個鍵的值
>>> print(my_dict['apple'])
5
>>> # 遍歷字典的鍵
>>> for key in my_dict:
... print(key)
...
apple
banana
orange
>>> # 遍歷字典的鍵和值
>>> for key, value in my_dict.items():
... print(key, value)
...
apple 5
banana 3
orange 2
三、字典的高級操作
1. 字典推導式
字典推導式是一種創建字典的方式,它可以從任何可迭代的對象中創建字典。語法格式為{key_expression: value_expression for expression in iterable}。
>>> # 創建一個字典,鍵是1~10的整數,值是它們的平方
>>> my_dict = {i: i**2 for i in range(1, 11)}
>>> print(my_dict)
{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81, 10: 100}
2. 字典的內置方法
字典有許多內置方法,可以方便地進行操作。以下是一些常用的內置方法:
i) clear()
clear()方法用於刪除字典中的所有項。
>>> my_dict = {'apple': 5, 'banana': 3, 'orange': 2}
>>> my_dict.clear()
>>> print(my_dict)
{}
ii) copy()
copy()方法用於複製字典。
>>> my_dict = {'apple': 5, 'banana': 3, 'orange': 2}
>>> new_dict = my_dict.copy()
>>> print(new_dict)
{'apple': 5, 'banana': 3, 'orange': 2}
iii) keys()
keys()方法返回字典中所有鍵組成的列表。
>>> my_dict = {'apple': 5, 'banana': 3, 'orange': 2}
>>> print(my_dict.keys())
dict_keys(['apple', 'banana', 'orange'])
iv) values()
values()方法返回字典中所有值組成的列表。
>>> my_dict = {'apple': 5, 'banana': 3, 'orange': 2}
>>> print(my_dict.values())
dict_values([5, 3, 2])
v) items()
items()方法返回字典中所有鍵-值對組成的列表。
>>> my_dict = {'apple': 5, 'banana': 3, 'orange': 2}
>>> print(my_dict.items())
dict_items([('apple', 5), ('banana', 3), ('orange', 2)])
vi) get()
get()方法用於獲取字典中某個鍵的值,如果鍵不存在,則返回指定的默認值(默認為None)。
>>> my_dict = {'apple': 5, 'banana': 3, 'orange': 2}
>>> print(my_dict.get('apple'))
5
>>> print(my_dict.get('pear'))
None
>>> print(my_dict.get('pear', 0))
0
vii) setdefault()
setdefault()方法用於獲取字典中某個鍵的值,如果鍵不存在,則添加該鍵-值對到字典中。
>>> my_dict = {'apple': 5, 'banana': 3, 'orange': 2}
>>> print(my_dict.setdefault('pear', 4))
4
>>> print(my_dict)
{'apple': 5, 'banana': 3, 'orange': 2, 'pear': 4}
>>> print(my_dict.setdefault('apple', 6))
5
>>> print(my_dict)
{'apple': 5, 'banana': 3, 'orange': 2, 'pear': 4}
3. 字典的排序
字典本身是無序的,但是可以通過sorted()函數和lambda函數實現對字典的排序。以下是兩種常見的排序方式:
i) 按鍵排序
按鍵排序是按字典中的鍵進行排序,如下所示:
>>> my_dict = {'apple': 5, 'banana': 3, 'orange': 2}
>>> # 按鍵排序,返回一個元組列表
>>> sorted_dict = sorted(my_dict.items(), key=lambda x: x[0])
>>> print(sorted_dict)
[('apple', 5), ('banana', 3), ('orange', 2)]
ii) 按值排序
按值排序是按字典中的值進行排序,如下所示:
>>> my_dict = {'apple': 5, 'banana': 3, 'orange': 2}
>>> # 按值排序,返回一個元組列表
>>> sorted_dict = sorted(my_dict.items(), key=lambda x: x[1])
>>> print(sorted_dict)
[('orange', 2), ('banana', 3), ('apple', 5)]
結語
Python字典作為一種常用的數據結構,可以高效地存儲、訪問和操作數據。字典的基本操作包括添加、修改、刪除、鍵的判斷和訪問,字典可以通過花括弧{}或者dict()函數創建。字典推導式和內置方法可以方便地進行操作,例如清空字典、複製字典、獲取鍵-值對等。同時也可以通過sorted()函數和lambda函數實現對字典的排序。在數據處理、機器學習、Web開發等領域都有廣泛的應用。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/246450.html