Python 辞書の交差
- Python 辞書
- 辞書内包表記 を使用して Python で 2つの辞書を交差させる
-
Python でビットごとの
&
演算子を使用して 2つの辞書を交差させる -
Python で Set
intersection()
メソッドを使用して 2つの辞書を交差させる - Python で複数の辞書を交差させる際に使用されるメソッド
- まとめ
この記事では、Python で 2つまたは複数の辞書に対して交差を実行するさまざまな方法について説明します。
Python 辞書
データは、Python 辞書を使用してキーと値のペア形式で保持され、変更可能なデータ構造です。 Python のディクショナリ データ型は、特定のキーに対して特定の値が存在する現実世界のデータ配置を模倣できます。
キーと値は、辞書を定義するために使用される要素です。
- キーは単一の要素である必要があります。
- 値は、リスト、整数、タプルなど、任意の型にすることができます。
つまり、ディクショナリはキーと値のペアのグループであり、値は任意の Python オブジェクトにすることができます。 対照的に、キーは文字列、タプル、数値などの不変の Python オブジェクトです。
複数のキーと値のペアを使用してディクショナリを作成できます。各ペアを中かっこで囲む前に、各キーとその値をコロンで区切ります。
構文は次のとおりです。
dict = {"Name": "John", "Age": 18, "Grade": "13"}
例を見てみましょう:
辞書内包表記 を使用して Python で 2つの辞書を交差させる
Python でキーを介して辞書の交差を実行するために、さまざまなアプローチを使用できます。
-
まず、元の辞書を
dict01
とdict02
に初期化して開始します。 -
元の辞書を印刷します。
-
次に、
dict01
のキーをk1
として、for
ループを実行し、dict01
のk1
がdict02
に存在するかどうかを確認します。 共通キーがある場合、その値はintersection
と呼ばれる新しい辞書にプッシュされます (要件に応じて辞書を優先できます)。 -
新しい辞書
intersection
を共通キーとその値とともに出力します。
例:
# inititializing the dictionaries
dict01 = {"A": 1, "B": 6, "C": 3, "D": 5}
dict02 = {"A": 1, "C": 4, "D": 5, "E": 2}
# printing original dictionary
print("First original dictionary: ", dict01)
print("Second original dictionary: ", dict02)
# performing intersection
intersection = {k1: dict01[k1] for k1 in dict01 if k1 in dict02}
# printing output
print("Intersected Dictionary: ", str(intersection))
上記のコードを実行すると、以下に示す出力が表示されます。
dict02
のキーを k2
とします。 for
ループを実行して、同じコードに従って、dict02
の k2
が dict01
にも存在するかどうかを確認します。
さらに、値が文字列型の場合:
# inititializing the dictionaries
dict01 = {1: "My", 2: "I", 3: "age"}
dict02 = {1: "name", 2: "live", 4: "year"}
# defining a function to merge strings
def mergeStrings(str01, str02):
return str01 + " " + str02
# performing intersection
intersectString = {
k1: mergeStrings(dict01[k1], dict02[k1]) for k1 in dict01.keys() if k1 in dict02
}
# printing output
print(intersectString)
上記のコードの結果を見てみましょう。
Python でビットごとの &
演算子を使用して 2つの辞書を交差させる
辞書から共通キーとキーに対応する値を単純にフィルタリングします。 同じ値を持つキーのみをフィルタリングします。このアプローチは、理解と適用がはるかに簡単です。
-
まず、最初に元の辞書で
dict01
とdict02
を設定します。 -
次に元の辞書を印刷します。
-
次に、辞書
dict01
とdict02
をitems()
関数を使用してリスト形式に変換します。 -
次に、
&
演算子を使用して AND を実行します。 共通のキーと値のペアは、dict()
関数を使用して辞書に変換され、新しい辞書intersection
に格納されます。 -
最後に、新しい辞書を印刷します。
例:
# inititializing dictionary
dict01 = {"A": 1, "B": 6, "C": 3, "D": 5}
dict02 = {"A": 1, "C": 4, "D": 5, "E": 2}
# printing original dictionary
print("First original dictionary: ", dict01)
print("Second original dictionary: ", dict02)
# performing intersection
intersection = dict(dict01.items() & dict02.items())
# printing output
print("Intersected Dictionary", str(intersection))
上記のコードを実行すると、次の結果が得られます。
Python 辞書の交差に対してビット単位の &
演算子を実行する場合、それぞれのキーのキーと値の両方も等しくなければなりません。
Python で Set intersection()
メソッドを使用して 2つの辞書を交差させる
set intersection()
メソッドは、セット m
と n
の両方に存在する要素で構成されるセットを次のように返します。
m = {"A": 1, "B": 6, "C": 3, "D": 5}
n = {"A": 1, "D": 5, "E": 2}
setM = set(m)
setN = set(n)
setM.intersection(setN)
for item in setM.intersection(setN):
print(item)
上記のサンプル コードを実行すると、以下の結果が得られます。
Python で複数の辞書を交差させる際に使用されるメソッド
ビットごとの &
演算子と Set intersection()
メソッドの両方を使用して、複数の辞書で交差する要素をさらにコーディングして簡単に見つけることができます。
ビットごとの &
演算子の使用:
# inititializing dictionary
dict01 = {"A": 1, "B": 6, "C": 3, "D": 5}
dict02 = {"A": 1, "C": 4, "D": 5, "E": 2}
dict03 = {"A": 1, "C": 9, "D": 5, "E": 1}
# printing original dictionary
print("First original dictionary: ", dict01)
print("Second original dictionary: ", dict02)
print("Third original dictionary: ", dict03)
# performing intersection
intersection = dict(dict01.items() & dict02.items() & dict03.items())
# printing output
print("Intersected Dictionary", str(intersection))
上記のコードを実行した後の結果を見てみましょう。
Set intersection()
メソッドの使用:
m = {"A": 1, "B": 6, "D": 5, "E": 2}
n = {"A": 1, "D": 5, "E": 2}
t = {"A": 1, "C": 4, "D": 5, "E": 2}
setM = set(m)
setN = set(n)
setT = set(t)
setM.intersection(setN).intersection(setT)
for item in setM.intersection(setN).intersection(setT):
print(item)
上記のコードを実行した後の結果を見てみましょう。
まとめ
まとめとして、Python で 2つまたは複数の辞書を交差させて新しい辞書を作成するための迅速かつ効率的な方法を検討しました。 好みやユースケースに基づいて、必要なアプローチを選択できます。
すべてキーとキーと値のペアのみのレベルで、共通のキーに異なる関数を使用することもある、2つ以上の辞書の共通部分を見つけました。 これらの方法は確かに唯一のものではありません。 より多くのことを考えることができ、おそらくこれらのタスクのためのより明示的なメソッドが、Python の後のバージョンで追加されるでしょう。
提案されたコードのビットのほとんどすべてがワンライナーですが、それらはすべて明確でエレガントです。
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.