Python 3で文字列表現された辞書を実際の辞書に変換する方法
Pythonで文字列として表現された辞書を実際の辞書オブジェクトに変換することは、データ処理やAPIの応答を扱う際に非常に便利です。ここでは、Python 3でこの変換を行ういくつかの方法を紹介します。
方法1: eval関数の使用
eval()
関数は、文字列を評価してPython式として実行します。これを利用して文字列形式の辞書を実際の辞書オブジェクトに変換できます。しかし、eval()
はセキュリティリスクを伴うため、信頼できるデータでのみ使用することが推奨されます。
str_dict = "{'name': 'Alice', 'age': 25, 'city': 'New York'}" dict_obj = eval(str_dict) print(dict_obj) print(type(dict_obj))
出力:
{'name': 'Alice', 'age': 25, 'city': 'New York'}
方法2: ast.literal_eval の使用
安全性を高めるために、ast
モジュールの literal_eval()
関数を使用する方法もあります。この関数は、evalよりも安全で、Pythonのリテラルを評価するのに適しています。
import ast str_dict = "{'name': 'Bob', 'age': 30, 'city': 'Paris'}" dict_obj = ast.literal_eval(str_dict) print(dict_obj) print(type(dict_obj))
出力:
{'name': 'Bob', 'age': 30, 'city': 'Paris'}
方法3: json.loads の使用
もう一つの一般的な方法は、JSON形式の文字列を辞書に変換することです。これには json
モジュールの loads()
関数を使用します。ただし、この方法で変換するためには、文字列が正しいJSON形式(例えば、キーがダブルクォーテーションで囲まれているなど)である必要があります。
import json str_dict = '{"name": "Charlie", "age": 28, "city": "Tokyo"}' dict_obj = json.loads(str_dict) print(dict_obj) print(type(dict_obj))
出力:
{'name': 'Charlie', 'age': 28, 'city': 'Tokyo'}
これらの方法を使うことで、Pythonで文字列形式の辞書を安全かつ効率的に実際の辞書オブジェクトに変換することができます。使用するデータの内容や形式に応じて、最適な方法を選択してください。