【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ファイルの利用方法を紹介しました。
キーで検索することはもちろんですが、バリューで検索することも時には必要になってくるため、
理解しておくと良いでしょう。

