在 Python 中對字典進行切片

Vaibhav Vaibhav 2023年1月30日
  1. 在 Python 中使用字典理解對字典進行切片
  2. 在 Python 中使用列表推導對字典進行切片
在 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}

這是一種內聯語法或字典理解,用於迭代可迭代物件並結合 ifelse 語句以新增更多邏輯並建立新物件。這句話可能看起來有點複雜,但相反,它真的很簡單,展示了 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 模組與切片字典的實際邏輯無關,使用此模組完全是可選的。

作者: Vaibhav Vaibhav
Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

相關文章 - Python Dictionary