今回は、PythonのChainMapについて詳しく解説します。
それでは、さっそく始めてみましょう!
Python ChainMapデータ構造とは何ですか?
ChainMapの概念に飛び込む前に、PythonのCollectionsモジュールについて理解を深めておきましょう。
Python Collectionsモジュールは、データの保存と操作のために様々なデータ構造を提供します。
カスタマイズされたデータの保存と操作を提供することで、他のすべてのデフォルトのデータ構造とは一線を画しています。
このモジュールは、カスタマイズされたデータ構造に成形するためのカスタム機能を持つ、異なるタイプのデータオブジェクトを完全に格納するコンテナとして動作します。
Collectionsモジュールによって提供されるそのようなコンテナの1つがChainMapです!
ChainMapを使えば、異なるタイプのKey-Valueエンティティを1つの場所にマージして保存することができます。
ChainMapコンテナは、複数の辞書を持ち、それらを1つの辞書としてマージすることができる。
Python ChainMap のインポート
ChainMapモジュールの機能を実装するために、以下のようにモジュールをインポートする必要があります。
from collections import ChainMap
|
それでは、複数の辞書から一般的なChainMap構造体を作ってみましょう。
構文は以下の様な感じです。
ChainMap(dict, dict)
|
例えば、以下の様になります。
以下の例では、2つの辞書AとBを作成し、両者を統合して1つの実体として表現している。
結果は以下の通りです。
from collections import ChainMap
a = {'Age': 1, 'Name': 'X'}
b = {'Age': 3, 'Name': 'Y'}
cm = ChainMap(a, b)
print(cm)
|
結果は以下の通りです。
ChainMap({'Age': 1, 'Name': 'X'}, {'Age': 3, 'Name': 'Y'})
|
ChainMapモジュールから知るべき重要な関数
ChainMapコンテナには、コンテナに格納された辞書を操作するための膨大な関数が用意されています。
ここでは、以下の関数を見てみましょう。
- キー()
- 値()
- マップ属性
1. Chainmap.keys()関数
keys()関数は、その名の通り、辞書ごとのkey-valueペアのうち、keyの値を抽出することができる関数です。
複数の辞書から一度にキーを抽出することができます。
構文は以下の様な感じです。
ChainMap.keys() |
例えば、以下の様になります。
from collections import ChainMap
a = {'Age': 1, 'Name': 'X'}
b = {'Age': 3, 'Name': 'Y'}
cm = ChainMap(a, b)
print(cm)
print ("Keys: ")
print (list(cm.keys()))
|
結果は以下の通りです。
ChainMap({'Age': 1, 'Name': 'X'}, {'Age': 3, 'Name': 'Y'})
Keys:['Age', 'Name']
|
2. ChainMap.maps属性
より明確な出力を得るために、maps属性は、辞書からすべてのキーとその値を関連付けることを可能にします。
その結果、出力は辞書のすべてのキーと値のペアで表現されます。
構文は以下の様な感じです。
ChainMap.maps |
例えば、以下の様になります。
from collections import ChainMap
a = {'Age': 1, 'Name': 'X'}
b = {'Age': 3, 'Name': 'Y'}
cm = ChainMap(a, b)
print(cm)
print ("Maps: ")
print (list(cm.maps))
|
結果は以下の通りです。
ChainMap({'Age': 1, 'Name': 'X'}, {'Age': 3, 'Name': 'Y'})
Maps:[{'Age': 1, 'Name': 'X'}, {'Age': 3, 'Name': 'Y'}]
|
3. Chainmap.values()関数
キーと辞書全体をマップとして表示する以外に、values()関数によって、特定のキーに関連するすべての値を独立して抽出し、表現することができます。
構文は以下の様な感じです。
ChainMap.values() |
例えば、以下の様になります。
from collections import ChainMap
a = {'Age': 1, 'Name': 'X'}
b = {'Std': 3}
cm = ChainMap(a, b)
print(cm)
print ("Values: ")
print (list(cm.values()))
|
結果は以下の通りです。
ChainMap({'Age': 1, 'Name': 'X'}, {'Std': 3})
Values: [1, 3, 'X']
|
まとめ
ここまでで、このトピックは終了です。
何か疑問があれば、お気軽にコメントください。
Pythonプログラミングに関連するこのような記事のために、私たちと一緒にご期待ください。