在 Python 中對字典進行切片

Vaibhav Vaibhav 2023年1月30日 2022年5月18日
  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 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.

LinkedIn GitHub

相關文章 - Python Dictionary