Python では、ディクショナリは、ディクショナリ内の値にアクセスするためにキーが使用されるキーと値のペアの要素を含むデータ構造です。 パイソン defaultdict のような組み込みの辞書がいくつかあります。この記事では、2 つの辞書を結合するさまざまな方法を見ていきます。
例
通信販売の横断
Input: dict1 = {'a': 10, 'b': 8} dict2 = {'d': 6, 'c': 4} Output: {'a': 10, 'b': 8, 'd': 6, 'c': 4}>Python で 2 つの辞書をマージする
いろいろな方法がありますが、 辞書 Python のさまざまな関数とコンストラクターを使用してマージできます。以下にいくつかの方法を示します。
- 使用する アップデート()
- 使用する アンパック演算子
- マージの使用 |オペレーター
- ループを使用したり、 キー() 方法
- dict コンストラクターの使用
- dict() コンストラクターを共用演算子 (|) とともに使用する
- 使用する 減らす()
Pythonの更新()
メソッドを使用することで アップデート() Python では、あるリストを別のリストにマージできます。ただし、この場合、2 番目のリストは最初のリストにマージされ、新しいリストは作成されません。戻ります なし 。この例では、update 関数を使用して 2 つの辞書をマージしています。
パイソン # Python code to merge dict using update() method def Merge(dict1, dict2): return(dict2.update(dict1)) # Driver code dict1 = {'a': 10, 'b': 8} dict2 = {'d': 6, 'c': 4} # This returns None print(Merge(dict1, dict2)) # changes made in dict2 print(dict2)> 出力:
None {'c': 4, 'a': 10, 'b': 8, 'd': 6}> 時間計算量: の上)
補助スペース: ○(1)
Python のアンパック演算子
** [二重星] を使用すると、辞書を使用して複数の引数を関数に直接渡すことができるショートカットです。詳細については、を参照してください **Python の kwargs 。これを使用して、まず最初の辞書のすべての要素を 3 番目の辞書に渡し、次に 2 番目の辞書を 3 番目の辞書に渡します。これにより、最初の辞書の重複キーが置き換えられます。
パイソン # Python code to merge dict using a single # expression def Merge(dict1, dict2): res = {**dict1, **dict2} return res # Driver code dict1 = {'a': 10, 'b': 8} dict2 = {'d': 6, 'c': 4} dict3 = Merge(dict1, dict2) print(dict3)> 出力
{'a': 10, 'b': 8, 'd': 6, 'c': 4}> 時間計算量: ○(1)
補助的な複雑さ: の上)
Python は | を使用して辞書をマージします。 Python 3.9では
Python の最新のアップデートでは、 | を使用できるようになりました。 2 つの辞書をマージする演算子。辞書を結合するのに非常に便利な方法です。この例では、 | を使用しています。 2 つの辞書をマージする演算子。
パイソン # code # Python code to merge dict using a single # expression def Merge(dict1, dict2): res = dict1 | dict2 return res # Driver code dict1 = {'x': 10, 'y': 8} dict2 = {'a': 6, 'b': 4} dict3 = Merge(dict1, dict2) print(dict3) # This code is contributed by virentanti16> 出力:
{'x': 10, 'a': 6, 'b': 4, 'y': 8}> 時間計算量: ○(1)
補助スペース: の上)
地図Java
forループとkeys()メソッドの使用
この例では、ループと 鍵() 2 つの辞書をマージするメソッド。
パイソン # code # Python code to merge dictionary def Merge(dict1, dict2): for i in dict2.keys(): dict1[i]=dict2[i] return dict1 # Driver code dict1 = {'x': 10, 'y': 8} dict2 = {'a': 6, 'b': 4} dict3 = Merge(dict1, dict2) print(dict3) # This code is contributed by Bhavya Koganti> 出力
{'x': 10, 'y': 8, 'a': 6, 'b': 4}> Python ChainMap クラスを使用した辞書のマージ
この例では、組み込みの チェーンマップ からのクラス コレクション モジュール。このクラスを使用すると、複数のディクショナリの単一ビューを作成でき、ChainMap に対して行われた更新や変更は基になるディクショナリに反映されます。
パイソン from collections import ChainMap # create the dictionaries to be merged dict1 = {'a': 1, 'b': 2} dict2 = {'c': 3, 'd': 4} # create a ChainMap with the dictionaries as elements merged_dict = ChainMap(dict1, dict2) # access and modify elements in the merged dictionary print(merged_dict['a']) # prints 1 print(merged_dict['c']) # prints 3 merged_dict['c'] = 5 # updates value in dict2 print(merged_dict['c']) # prints 5 # add a new key-value pair to the merged dictionary merged_dict['e'] = 6 # updates dict1 print(merged_dict['e']) # prints 6> 出力
1 3 5 6>
Python で dict コンストラクターを使用して 2 つの辞書をマージします。
この例では、dict コンストラクターを使用して 2 つの辞書をマージしています。
パイソン def merge_dictionaries(dict1, dict2): merged_dict = dict1.copy() merged_dict.update(dict2) return merged_dict # Driver code dict1 = {'x': 10, 'y': 8} dict2 = {'a': 6, 'b': 4} print(merge_dictionaries(dict1, dict2))> 出力
{'x': 10, 'y': 8, 'a': 6, 'b': 4}> 時間計算量: の上)
補助スペース: の上)
Python dict() コンストラクターと共用演算子 (|) を使用した辞書のマージ
このメソッドは、dict() コンストラクターとユニオン演算子 (|) を使用して、2 つの辞書をマージします。 Union 演算子は 2 つの辞書のキーと値を結合し、2 つの辞書内の共通キーは 2 番目の辞書から値を取得します。
パイソン # method to merge two dictionaries using the dict() constructor with the union operator (|) def Merge(dict1, dict2): # create a new dictionary by merging the items of the two dictionaries using the union operator (|) merged_dict = dict(dict1.items() | dict2.items()) # return the merged dictionary return merged_dict # Driver code dict1 = {'a': 10, 'b': 8} dict2 = {'d': 6, 'c': 4} # merge the two dictionaries using the Merge() function merged_dict = Merge(dict1, dict2) # print the merged dictionary print(merged_dict)> 出力
{'d': 6, 'b': 8, 'c': 4, 'a': 10}> 時間計算量: O(n)。n は両方のディクショナリ内のキーと値のペアの合計数です。
補助スペース: O(n)、n は両方の辞書内のキーと値のペアの合計数です。
Python では、reduce() を使用して 2 つの辞書をマージします。
この例では、reduce() 関数を使用して 2 つの辞書をマージしています。このメソッドでは、マージ関数を定義し、2 つの辞書を引数として受け取り、それらのマージを返します。
Javaで現在の日付を取得するパイソン
from functools import reduce def merge_dictionaries(dict1, dict2): merged_dict = dict1.copy() merged_dict.update(dict2) return merged_dict dict1 = {'a': 10, 'b': 8} dict2 = {'d': 6, 'c': 4} dict_list = [dict1, dict2] # Put the dictionaries into a list result_dict = reduce(merge_dictionaries, dict_list) print(result_dict) #This code is contributed by Rayudu.> 出力
{'a': 10, 'b': 8, 'd': 6, 'c': 4}> 時間計算量:O(n)、 ここで、n は dict_list リスト内の辞書の数です。
補助複雑度 : O(m)、 ここで、m はすべての辞書内のキーと値のペアの合計数です。