【Python,JSON】辞書型の活用
2025 年 6 月 9 日 by yamamotor1.はじめに
Pythonでは辞書型を利用することが多くあります。
また、PythonではJSONファイルを辞書型として扱うことが出来るため、
JSONファイルを上手く使いこなすことで、より使いやすいプログラムを作成することが出来ます。
今回は簡単な辞書型の利用方法から、階層が深いような辞書型の利用方法まで、様々なものを紹介します。
2.JSONファイルから取得した一般的な辞書型のバリューをキーから検索する
下記のようなJSONファイル(test_1.json)を用意しました。
{ "key1": "value1", "key2": "value2", "key3": "value3", "key4": "value4" }
上記のJSONをPythonで読み取り、キーで検索をかけていきます。
実装したコードは下記の通りです。
import json # JSONファイルを読み込む関数 def load_json(file_path): with open(file_path, 'r', encoding='utf-8') as file: data = json.load(file) return data # JSONファイルを読み込む file_path = 'test_1.json' data = load_json(file_path) # key1で検索 print(data["key1"]) # value1
こちらは一般的なため、特に解説はしません。
3. JSONファイルから取得した一般的な辞書型のキーをバリューから検索する
2と同様のJSONファイルを利用し、バリューで該当のキーを検索します。
実装したコードは下記の通りです。
import json # JSONファイルを読み込む関数 def load_json(file_path): with open(file_path, 'r', encoding='utf-8') as file: data = json.load(file) return data # JSONファイルを読み込む file_path = 'test_1.json' data = load_json(file_path) # value1で検索 key = [k for k, v in data.items() if v == "value1"] print(key) # key1
上記では内包表記を使って辞書の中から検索対象のバリューに対応するキーを検索しています。
バリューが検索対象と一致する場合には、そのキーをリストに追加します。
最後に追加されたキーを出力しています。
4.JSONファイルから取得した複雑な辞書型のバリューをキーから検索する
下記のようなJSONファイル(test_2.json)を用意しました。
{ "key1": { "key1_1": "value1_1", "key1_2": "value1_2", "key1_3": "value1_3", "key1_4": "value1_4" }, "key2": { "key2_1": "value2_1", "key2_2": "value2_2", "key2_3": "value2_3", "key2_4": "value2_4" } }
上記のJSONファイル内を再帰的にキーで検索します。
実装したコードは下記の通りです。
import json # JSONファイルを読み込む関数 def load_json(file_path): with open(file_path, 'r', encoding='utf-8') as file: data = json.load(file) return data # JSONファイルを読み込む file_path = 'test_2.json' data = load_json(file_path) # 再帰的に検索条件を設定して値を取得する def search_value(data, search_key): if isinstance(data, dict): for key, value in data.items(): if key == search_key: return value elif isinstance(value, (dict, list)): result = search_value(value, search_key) if result is not None: return result elif isinstance(data, list): for item in data: result = search_value(item, search_key) if result is not None: return result return None # key2_3の値を検索する search_key = 'key2_3' result = search_value(data, search_key) print(result) # value2_3
上記では、キーの値が辞書型、またはリスト型の場合に、再帰的に関数を呼び出すように記載しています。
また、キーが一致する場合にはその値を返却します。
これにより、複雑な階層のJSONファイル、辞書型の形式でも、指定したキーの値を検索することが可能です。
5.JSONファイルから取得した複雑な辞書型のキーをバリューから検索する
4と同様のJSONファイルを利用し、バリューからキーを再帰的に検索します。
実装したコードは下記の通りです。
import json # JSONファイルを読み込む関数 def load_json(file_path): with open(file_path, 'r', encoding='utf-8') as file: data = json.load(file) return data # JSONファイルを読み込む file_path = 'test_2.json' data = load_json(file_path) # 再帰的に値からキーを検索する関数 def search_key(data, search_value): if isinstance(data, dict): for key, value in data.items(): if value == search_value: return key elif isinstance(value, (dict, list)): result = search_key(value, search_value) if result is not None: return result elif isinstance(data, list): for item in data: result = search_key(item, search_value) if result is not None: return result return None # value2_3のキーを検索する search_value = 'value2_3' result = search_key(data, search_value) print(result) # key2_3
4と同様に、再帰的にバリューからキーを検索するように記載しています。
こちらも汎用的に検索を行うことが可能です。
6.終わりに
今回は、よく利用するJSONファイルの利用方法を紹介しました。
キーで検索することはもちろんですが、バリューで検索することも時には必要になってくるため、
理解しておくと良いでしょう。