Python 辞書を拡張する
-
Python で
update()
メソッドを使用して辞書を拡張する -
Python 辞書の拡張に
**
演算子を使用する - 辞書内包表記を使用して Python 辞書を拡張する
-
collections.Chainmap
を使用して 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_dict
の name
キー値が 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)