在 Python 中對字典進行切片
切片是指獲得整體的一部分。在 Python、C、C++、Java、JavaScript 等所有程式語言中,切片是指獲取字串或列表的一部分。字串和列表的連續部分稱為子字串和子陣列。子序列是字串或列表的非連續部分。
字典是一種包含鍵值對的資料結構。在字典中,一個可雜湊的唯一鍵指向一個值。值可以是任何東西;整數、浮點數、列表、元組、集合、字典等。字典在其他程式語言中通常被視為對映,但它們執行相同的任務。
對字典進行切片是指獲取字典中存在的鍵值對的子集。通常,人們會使用所需鍵的列表從字典中過濾掉值。在本文中,我們將通過一些相關示例學習如何使用 Python 對字典進行切片。
在 Python 中使用字典理解對字典進行切片
給定一個包含鍵值對和所需鍵列表的非空字典,我們可以通過迭代字典並建立一個新字典來過濾掉所需的鍵值對。在迭代時,我們必須確保列表中的鍵是有效的並且可以在字典中找到。否則,程式會丟擲煩人的異常。有關討論的方法,請參閱以下 Python 程式碼。
import json
a = {
"C": 1.1,
"O": True,
"M": "HelloWorld",
"P": {
"X": 1,
"Y": 2,
"Z": 3
},
"U": 25,
"T": None,
"E": ["Python", "Is", "Beautiful"],
"R": [1, 2, 100, 200]
}
targets = ["C", "P", "U"]
result = {key: a[key] for key in a.keys() if key in targets}
print(json.dumps(result, indent = 4))
輸出:
{
"C": 1.1,
"P": {
"X": 1,
"Y": 2,
"Z": 3
},
"U": 25
}
a
變數儲存字典,targets
變數是所有必需鍵的列表。為了建立一個新字典,我們遍歷所有字典的鍵並檢查它是否存在於 targets
中。如果是,我們將其新增到我們的新字典中。否則,我們跳過它。這行程式碼執行所有這些建立、過濾和檢查。
result = {key: a[key] for key in a.keys() if key in targets}
這是一種內聯語法或字典理解,用於迭代可迭代物件並結合 if
和 else
語句以新增更多邏輯並建立新物件。這句話可能看起來有點複雜,但相反,它真的很簡單,展示了 Python 程式語言的美麗和強大。
上述 Python 程式碼更直接、更基本的等效 Python 程式碼如下。
import json
a = {
"C": 1.1,
"O": True,
"M": "HelloWorld",
"P": {
"X": 1,
"Y": 2,
"Z": 3
},
"U": 25,
"T": None,
"E": ["Python", "Is", "Beautiful"],
"R": [1, 2, 100, 200]
}
targets = ["C", "P", "U"]
result = {}
for key in a.keys():
if key in targets:
result[key] = a[key]
print(json.dumps(result, indent = 4))
輸出:
{
"C": 1.1,
"P": {
"X": 1,
"Y": 2,
"Z": 3
},
"U": 25
}
在 Python 中使用列表推導對字典進行切片
儲存在字典中的鍵值對可以以列表的形式獲取。給定一個目標列表,我們可以遍歷這個列表列表並過濾掉目標列表中不存在的鍵。此外,我們可以使用過濾後的列表建立一個新字典。有關上述方法,請參閱以下 Python 程式碼。
import json
a = {
"C": 1.1,
"O": True,
"M": "HelloWorld",
"P": {
"X": 1,
"Y": 2,
"Z": 3
},
"U": 25,
"T": None,
"E": ["Python", "Is", "Beautiful"],
"R": [1, 2, 100, 200]
}
targets = ["C", "P", "U"]
result = {}
pairs = a.items()
for (key, value) in pairs:
if key in targets:
result[key] = value
print(json.dumps(result, indent = 4))
輸出:
{
"C": 1.1,
"P": {
"X": 1,
"Y": 2,
"Z": 3
},
"U": 25
}
items()
方法返回一個包含列表內鍵值對的可迭代物件。對於上述字典,pairs
變數如下所示。
dict_items([('C', 1.1), ('O', True), ('M', 'HelloWorld'), ('P', {'X': 1, 'Y': 2, 'Z': 3}), ('U', 25), ('T', None), ('E', ['Python', 'Is', 'Beautiful']), ('R', [1, 2, 100, 200])])
使用 for
迴圈,pairs
變數中的值在 if
語句的幫助下被解包和過濾。然後將過濾後的值新增到新的 result
字典中。
上面討論的所有示例都使用 json
模組來精美地列印字典的輸出。請注意,json
模組與切片字典的實際邏輯無關,使用此模組完全是可選的。