Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで辞書(dict)を文字列に変換する方法|str()とjson.dumps()の使い分け

Pythonでデータを扱っていると、辞書(dict)オブジェクトを文字列に変換したい場面に遭遇することがあります。例えば、ログ出力やファイルへの保存、API通信などがその代表例です。

本記事では、辞書を文字列へ変換する代表的な2つの方法を、サンプルコードと実行結果とともにわかりやすく解説します。

方法1:str() 関数を使う

最もシンプルな方法は、str() 関数に辞書オブジェクトを引数として渡すだけです。変換前後の型の違いは、type() 関数を使えば簡単に確認できます。

サンプルコード

DictA = {"Mon": "2 pm", "Wed": "9 am", "Fri": "11 am"}
print("元の辞書 : \n", DictA)
print("型 : ", type(DictA))

# str() で変換
res = str(DictA)

# 結果を出力
print("文字列に変換した結果:\n", res)
print("結果の型 : ", type(res))

実行結果

元の辞書 :
{'Mon': '2 pm', 'Wed': '9 am', 'Fri': '11 am'}
型 : <class 'dict'>
文字列に変換した結果:
{'Mon': '2 pm', 'Wed': '9 am', 'Fri': '11 am'}
結果の型 : <class 'str'>

方法2:json.dumps() を使う

標準ライブラリの json モジュールには dumps メソッドが用意されており、これを使うと辞書オブジェクトを直接文字列に変換できます。

str() との大きな違いは、生成される文字列が JSON形式(ダブルクォート使用)になるという点です。このため、Web APIとのデータ交換や設定ファイルの保存など、他システムとの連携が必要な場合に特に有用です。

サンプルコード

import json

DictA = {"Mon": "2 pm", "Wed": "9 am", "Fri": "11 am"}
print("元の辞書 : \n", DictA)
print("型 : ", type(DictA))

# json.dumps() で変換
res = json.dumps(DictA)

# 結果を出力
print("文字列に変換した結果:\n", res)
print("結果の型 : ", type(res))

実行結果

元の辞書 :
{'Mon': '2 pm', 'Wed': '9 am', 'Fri': '11 am'}
型 : <class 'dict'>
文字列に変換した結果:
{"Mon": "2 pm", "Wed": "9 am", "Fri": "11 am"}
結果の型 : <class 'str'>

2つの方法の違いまとめ

項目str()json.dumps()
クォートの種類シングルクォート(')ダブルクォート(")
形式Pythonのrepr表現JSON準拠
主な用途表示・デバッグ・ログ出力API通信・ファイル保存・他言語との連携

単に画面に表示したりログに残したりするだけであれば str() で十分ですが、データとして再利用する場合は json.dumps() の利用を検討しましょう。逆方向の操作(文字列から辞書への復元)には json.loads() や ast.literal_eval() が使えます。

  1. 【Python入門】strptimeを使って日付文字列をdateオブジェクトに変換する方法

    Pythonでは、datetimeモジュールのstrptime関数を使うことで、文字列形式の日付データを簡単にdatetimeオブジェクトへ変換できます。この関数には、変換したい日付の文字列と、その日付がどのような書式で記述されているかを示すフォーマット指定子の2つの引数を渡します。基本的な使い方(サンプルコード)以下の例では、「2017年12月29日」という日付が「29122017」という文字列として表現されている場合に、それを日付オブジェクトへ変換しています。import datetime date_str = 29122017 # 日付文字列(2017年12月29日) format

  2. Pythonで文字列を辞書(dict)に変換する方法|ast.literal_evalとjson.loadsの使い分け

    Pythonでは、文字列形式で表現された辞書データを実際のdictオブジェクトに変換したい場面がよくあります。主な方法としては、標準ライブラリの ast.literal_eval() を使う方法と、json モジュールを使う方法の2つがあります。それぞれの特徴と使い方を詳しく見ていきましょう。 方法1:ast.literal_eval() を使う ast.literal_eval() は、文字列をPythonの式として安全に評価する関数です。任意のコードを実行できてしまう eval() とは異なり、リテラル構造以外は評価しないため、セキュリティ面でも安心して利用できます。 評価できるのは、文