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 変数は必要なすべてのキーのリストです。新しい辞書を作成するために、すべての辞書のキーを繰り返し処理し、それがターゲット内に存在するかどうかを確認します。含まれている場合は、新しい辞書に追加します。それ以外の場合はスキップします。この 1 行のコードは、このすべての作成、フィルタリング、およびチェックを実行します。

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 ステートメントを使用してフィルタリングされます。フィルタリングされた値は、新しい結果ディクショナリに追加されます。

上記のすべての例では、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