PythonのChainMapを使用し、リスト内の独立した辞書をマージ(結合)してみます。
Pythonのcollections組み込みモジュールによって提供されるChainMapは、複数の辞書から、一つの辞書を作成することができます。
■Python
Google Colaboratory(Google Colab),Python3.7.10
■ChainMapを使用しリスト内の独立した辞書をマージする
では、早速ChainMapを使用しリスト内の独立した辞書をマージしてみます。
■コード
from collections import ChainMap list_test = [{1:'田中',2:'佐藤'},{3:'佐藤',4:'吉田'},{5:'佐々木'}] new_list = dict(ChainMap(*list_test)) print(new_list)
今回は、list_testというリストを角括弧”[ ]”を使用し定義します。リスト内には、辞書を定義するするために、波括弧”{ }”を使用し、各要素を囲み、コロン”:”でキーと値を格納します。
格納後、new_listという変数を定義し、ChainMap()を用います。括弧内に引数,パラメータとして、list_testを渡します。この時に”*”(アスタリスク)を用います。使用しないと、「dictionary update sequence element #2 has length 1; 2 is required(辞書更新シーケンス要素#2の長さは1です。 2が必要です)」というERRORが発生しますので、任意の数の位置引数を受け付けるようにします。これで、リスト内の独立した辞書を1つにすることができます。
その後に、dict()を用いて、辞書型配列を作成します。作成後、new_list変数に格納。
最後に、print()関数でnew_list変数内の情報を出力します。
■実行・検証
スクリプトを作成後、このスクリプトを実行してみます。
実行してみると、ChainMap()を用いて、今回定義したリスト内の独立した辞書を1つにして、新しく辞書型配列として、print()関数で出力させることができました。
■辞書の順序を変更する
今回、出力された辞書は、順序が変更されています。
■コード
from collections import ChainMap list_test = [{1:'田中',2:'佐藤'},{3:'佐藤',4:'吉田'},{5:'佐々木'}] new_list = dict(ChainMap(*list_test[::-1])) print(new_list)
一貫性を保ちたい場合は、ChainMap()を用いて、括弧内に引数,パラメータとして、list_testを渡す時に、スライス操作で、角括弧”[ ]”とコロン”:”が2つ,「-1」を使用すると、順序を変更すること(リバース・逆順)ができます。
■実行・検証
スクリプトを作成後、このスクリプトを実行してみます。
実行してみると、スライス操作により、辞書の順序が変更されて出力されました。
コメント