目次
はじめに
Pythonにはさまざまな便利なデータ構造が用意されています。その中でも collections
モジュールの一つである ChainMap
は、複数の辞書を結合して一つのマップのように扱うことができる便利な機能です。この記事では、ChainMap.maps
についての基本情報から使用例、応用例まで詳しく解説していきます。
ChainMap.mapsとは?
ChainMap
はPythonの標準ライブラリ collections
に含まれるクラスで、複数の辞書を結合し、優先順位付きの辞書のように扱うことができます。ChainMap.maps
はその中のプロパティで、内部の辞書のリストを表示します。
ChainMap.mapsの基本情報
- モジュール:
collections
- Pythonバージョン: 3.3 以降
- 特長: 複数の辞書を1つにまとめて検索できる
- 優先順位: 最初の辞書が最優先で検索され、次に後続の辞書が検索されます。
使い方
from collections import ChainMap
dict1 = {"a": 1, "b": 2}
dict2 = {"b": 3, "c": 4}
chain = ChainMap(dict1, dict2)
print(chain.maps) # [{'a': 1, 'b': 2}, {'b': 3, 'c': 4}]
ChainMap.mapsの使用例
例1: 値の検索
from collections import ChainMap
config_default = {"host": "localhost", "port": 8000}
config_custom = {"port": 8080}
config = ChainMap(config_custom, config_default)
print(config["host"]) # localhost
print(config["port"]) # 8080
ChainMap.mapsの応用例
例2: 環境変数とデフォルト設定の統合
import os
from collections import ChainMap
defaults = {"host": "localhost", "port": 8000}
env = {"port": os.getenv("APP_PORT", 8080)}
settings = ChainMap(env, defaults)
print(settings["host"]) # localhost
print(settings["port"]) # 8080 (環境変数があればその値)
まとめ
ChainMap.maps
を使うことで、複数の辞書を優先順位付きで効率よく検索できることがわかりました。特に設定ファイルの管理や環境変数の統合に便利です。Python 3.11 でも引き続き利用できるため、積極的に活用してみてください。