Python 辞書を拡張する

Neema Muganga 2023年1月30日
  1. Python で update() メソッドを使用して辞書を拡張する
  2. Python 辞書の拡張に**演算子を使用する
  3. 辞書内包表記を使用して Python 辞書を拡張する
  4. collections.Chainmap を使用して Python 辞書を拡張する
Python 辞書を拡張する

この記事では、Python 辞書を別の辞書で拡張する方法をユーザーに示します。ディクショナリは、変更可能な(変更可能な)データのコンテナであり、このデータをキーと値のペアの例 {key: 'value'} の形式で格納します。

連結により、辞書を別の要素で拡張できます。これは、一方の辞書のすべてのキーと値のペアがもう一方の辞書に追加されることを意味します。

Python で update() メソッドを使用して辞書を拡張する

update() メソッドは、Python が辞書の連結を実装するために使用する方法の 1つです。これは、別のディクショナリのキーと値のペア要素を現在のディクショナリの末尾に追加することによって行われます。

この方法は、別の辞書とは異なるキーと値のペアを持つ辞書を拡張する場合に特に便利です。それ以外の場合、update() を使用すると、最初のディクショナリの既存の値が 2 番目のディクショナリの要素で上書きされます。

簡単に言うと、2 番目に定義されたディクショナリの値は、重複しているため、最初のディクショナリの値を上書きします。

first_dict = {"name": "Yolanda", "major": "Bsc Comp Science", "age": 23}
second_dict = {"name": "Beatrice", "major": "Bsc Comp Science", "age": 43}
first_dict.update(second_dict)
print(first_dict)

出力:

{'name': 'Beatrice', 'major': 'Bsc Comp Science', 'age': 43}

上記の辞書には、name である同一の key 値があります。update() を使用してこれらのデータストアを連結すると、first_dictname キー値が second_dict のキー値で上書きされます。したがって、出力に表示されるように単一の辞書になります。

ただし、まだ定義されていない値で 1つのディクショナリを拡張する場合、update() は、定義された両方の辞書からのすべてのキーと値のペアを含む単一の辞書を表示します。

例:

dict_one = {'u':2, 'v':4, 'w':7}
dict_two = {'x':5, 'y':6, 'z': 8}
dict_one.update(dict_two)
print(dict_one)

出力:

{'u': 2, 'v': 4, 'w': 7, 'x': 5, 'y': 6, 'z': 8}

Python 辞書の拡張に**演算子を使用する

1 行のステートメントで asterik 演算子を使用すると、次のようになります。

dict(iterable, **kwargs)

iterable は最初に定義された辞書であり、2 番目のパラメーターは 2 番目の辞書(キーワードパラメーター)です。

y = {"a": 5, "b": 6}
z = {"c": 7, "d": 9}

x = dict(y, **z)
print(x)

出力:

{'a': 5, 'b': 6, 'c': 7, 'd': 9}

定義されたディクショナリにキーと値のペアのオーバーラップがある場合、update() で見たのと同じように、2 番目のディクショナリのアイテムが最初のディクショナリのアイテムとオーバーラップします。

例:

first_dict = {"a": 2, "b": 3, "c": 5}
second_dict = {"c": 4, "e": 6, "f": 7}
dictt = dict(first_dict, **second_dict)
print(dictt)

出力:

{'a': 2, 'b': 3, 'c': 4, 'e': 6, 'f': 7}

**dictionary アイテムの引数名とキーは文字列データ型でなければならないことに注意することも重要です。それ以外の場合は、Typerror 例外が表示されます。

例:

first_dict = {"a": 2, "b": 3, "c": 5}
second_dict = {"c": 4, "e": 6, 7: 7}
dictt = dict(first_dict, **second_dict)
print(dictt)

出力:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: keywords must be strings

辞書内包表記を使用して Python 辞書を拡張する

この変換メソッドは、元の辞書の項目を新しい辞書に条件付きで含めることにより、ある Python 辞書を別の辞書に変換します。上記のようなアスタリスクの使用と同様に機能します。

first_dict = {"a": 2, "b": 3, "c": 5}
second_dict = {"c": 4, "e": 6, "f": 7}
the_dictionary = {**first_dict, **second_dict}
print(the_dictionary)

出力:

{'a': 2, 'b': 3, 'c': 4, 'e': 6, 'f': 7}

collections.Chainmap を使用して Python 辞書を拡張する

Python は、サーバル辞書をグループ化して、必要に応じて更新できる単一のビューを形成する ChainMap クラスを提供します。Python の collections モジュールからインポートします。

この方法を使用して、要素の連鎖を高速化します。これは、chainmap が辞書のビューのみを使用するためです。したがって、データのコピーは含まれません。

さらに、任意の時点でキーを上書きします。したがって、出力からデータソースが何であるかを知ることができます。

次のように実装します。

from collections import ChainMap

first_dict = {"a": 2, "b": 3, "c": 5}
second_dict = {"c": 4, "e": 6, "f": 7}
a_dictionary = ChainMap(first_dict, second_dict)