カテゴリ: Python 更新日: 2025/12/05

Pythonの辞書をファイルに保存・読み込む方法(pickle / json)初心者向け完全ガイド

Pythonの辞書をファイルに保存・読み込む方法(pickle / json)
Pythonの辞書をファイルに保存・読み込む方法(pickle / json)

先生と生徒の会話形式で理解しよう

生徒

「Pythonで作った辞書をファイルに保存して、あとでまた読み込みたいのですが、どうすればいいですか?」

先生

「Pythonではpicklejsonという2つの方法が代表的です。それぞれ特徴がありますよ。」

生徒

「pickleとjsonって何が違うんですか?」

先生

「pickleはPython専用の保存形式で、jsonは人間が読めるテキスト形式です。それぞれの使い方を順番に説明しますね!」

-

1. pickleで辞書を保存・読み込む

1. pickleで辞書を保存・読み込む
1. pickleで辞書を保存・読み込む

pickleはPythonのオブジェクトをそのまま保存できるバイナリ形式の方法です。型の情報も保持されるので、数値やリストなどを含んだ辞書でも問題なく扱えます。


import pickle

data = {"名前": "田中", "年齢": 28, "趣味": ["読書", "旅行"]}

# 保存
with open("data.pkl", "wb") as f:
    pickle.dump(data, f)

# 読み込み
with open("data.pkl", "rb") as f:
    loaded_data = pickle.load(f)

print(loaded_data)

{'名前': '田中', '年齢': 28, '趣味': ['読書', '旅行']}

注意点として、pickleはPython専用の形式なので、他の言語とは互換性がありません。

2. jsonで辞書を保存・読み込む

2. jsonで辞書を保存・読み込む
2. jsonで辞書を保存・読み込む

jsonは「JavaScript Object Notation」の略で、テキスト形式のデータ保存方法です。人間が読める形式で、Python以外の言語ともデータ交換できます。


import json

data = {"名前": "佐藤", "年齢": 34, "趣味": ["音楽", "料理"]}

# 保存
with open("data.json", "w", encoding="utf-8") as f:
    json.dump(data, f, ensure_ascii=False, indent=4)

# 読み込み
with open("data.json", "r", encoding="utf-8") as f:
    loaded_data = json.load(f)

print(loaded_data)

{'名前': '佐藤', '年齢': 34, '趣味': ['音楽', '料理']}

ensure_ascii=Falseを指定することで、日本語がそのまま保存されます。

3. pickleとjsonの違い

3. pickleとjsonの違い
3. pickleとjsonの違い
  • pickle:Python専用、型情報を保持、バイナリ形式、人間には読みにくい
  • json:テキスト形式、他の言語と互換性あり、人間にも読みやすい

用途によって使い分けることが重要です。例えば、Pythonだけで扱う一時的なデータはpickle、他システムとやり取りするデータはjsonが向いています。

4. 応用:複数の辞書を保存する

4. 応用:複数の辞書を保存する
4. 応用:複数の辞書を保存する

複数の辞書をまとめて保存する場合は、リストや辞書に格納してから保存します。


data_list = [
    {"名前": "山田", "年齢": 25},
    {"名前": "鈴木", "年齢": 30}
]

import json
with open("multi.json", "w", encoding="utf-8") as f:
    json.dump(data_list, f, ensure_ascii=False, indent=4)

with open("multi.json", "r", encoding="utf-8") as f:
    loaded_list = json.load(f)

print(loaded_list)

[{'名前': '山田', '年齢': 25}, {'名前': '鈴木', '年齢': 30}]
-

5. 実務での注意点

5. 実務での注意点
5. 実務での注意点

pickleはセキュリティ上、信頼できないファイルを読み込むと危険な場合があります。jsonは安全ですが、日付やPython特有のオブジェクトはそのままでは保存できません。

業務で使う場合は、データの性質と利用環境を考えて適切な方法を選びましょう。

まとめ

まとめ
まとめ

Python で辞書データを保存したり読み込んだりする作業は、プログラムを書いていくうえで非常に重要な基礎になります。特に辞書型は、ユーザー情報、設定データ、アプリの状態などをまとめて扱えるため、保存方法を理解しておくと実務でも学習でも大きく役立ちます。今回の記事では、Python の代表的な保存方法である picklejson の2つを比較しながら、それぞれの特徴や使い方を丁寧に確認してきました。どちらも辞書の保存に使えますが、保存形式や使える場面が異なるため、目的に応じて正しく選ぶことがとても大切です。

まず、pickle は Python 専用のバイナリ形式であり、数値や文字列だけでなくリストや辞書を含む複雑なデータ構造をそのままの形で保存できる強力な仕組みです。型の情報も完全に保持されるため、そのまま保存してそのまま読み込めますが、その一方でPython 以外の言語とは互換性がないことが特徴です。実務や学習環境で長期間保存するデータや、別システムで読み取る可能性があるデータには向きません。しかし、Python 内だけですぐに保存してすぐ読み込むような場合には「一番手軽で元のまま扱える」という大きな利点があります。

一方で json はテキスト形式で人間にも読みやすく、他の言語とも互換性があるという点で非常に汎用性の高い保存方法です。特に Web API やフロントエンドとのやり取り、外部サービスへの送受信など、Python 以外の環境と連携する場面では json が標準的な形式となっています。また、ファイルがシンプルなテキストのため git などでの管理にも適しています。ただし json は Python の辞書とは完全に同じ構造を扱えるわけではなく、日付型や一部のオブジェクトなどはそのまま保存できないという制約もあります。今回の例でもensure_ascii=False を使うことで日本語を問題なく保存できることを確認しました。

辞書データを安全かつ確実に保存するには、「保存したいデータの性質」と「そのデータを使う環境」を正しく理解したうえで pickle と json を選び分けることが重要です。短期間の保存や Python 内で完結する処理なら pickle が便利であり、他の言語とやり取りしたり設定ファイルとして再利用するなら json が最適です。また、複数の辞書を扱う場合には、それらをリストにまとめて保存する方法が効率的で、読み込み後も扱いやすくなります。

さらに実務においては、pickle の読み込みが危険になるケースがあることも押さえておく必要があります。pickle ファイルは Python のオブジェクトを復元する際に任意コードが実行される可能性があるため、信頼できないファイルは絶対に読み込まないようにすることが大切です。一方で json は内容が可視化されているぶん、セキュリティリスクが低く、広い場面で利用されています。しかし json も万能ではなく、データの種類によっては追加加工が必要になることもあります。用途に合わせた柔軟なデータ管理が求められます。

ここまでの内容を踏まえ、辞書をファイルに保存する基本パターンをひとつのサンプルコードとしてまとめてみました。pickle と json のどちらも使えるようになると、データ管理の幅が一気に広がり、アプリケーション開発や学習の効率が大きく向上します。


import pickle
import json

# 共通で使う辞書データ
profile = {
    "名前": "山本",
    "年齢": 32,
    "趣味": ["釣り", "料理"],
    "有効": True
}

# pickleで保存
with open("profile.pkl", "wb") as f:
    pickle.dump(profile, f)

# pickleで読み込み
with open("profile.pkl", "rb") as f:
    loaded_pickle = pickle.load(f)

print("pickle読み込み:", loaded_pickle)

# jsonで保存
with open("profile.json", "w", encoding="utf-8") as f:
    json.dump(profile, f, ensure_ascii=False, indent=4)

# jsonで読み込み
with open("profile.json", "r", encoding="utf-8") as f:
    loaded_json = json.load(f)

print("json読み込み:", loaded_json)

このように、pickle と json はどちらも辞書を保存するための便利な選択肢ですが、用途や環境に応じて賢く使い分けることで Python のデータ管理がより快適になります。辞書はアプリの構造や設定を保持するための基本的なデータ型であるため、保存方法の理解はそのままスキルアップにつながります。特にデータの永続化や外部との連携を行うプログラムを書きたい場合には、pickle と json の特徴や安全性、扱い方をしっかり押さえておくことで、トラブルを避けながら堅実な開発ができるようになります。

また、実務の現場では、データの形式が増えたり、システム間でやり取りされる構造が複雑になったりすることも少なくありません。そうした場合にも、辞書の保存方法を理解していれば、適切なフォーマットを選んで安全かつ効率よく処理ができます。pickle と json は Python 初心者が最初に学ぶデータ保存技術として最適であり、理解しておくと後の学習がとてもスムーズになります。今回学んだ知識を活かしながら、実際のプログラムでもぜひ試してみてください。

先生と生徒の振り返り会話

生徒

「pickle と json の違いがよくわかりました。最初はどっちを使えばいいのか迷っていたのですが、今回の説明で用途がはっきりしました!」

先生

「それはよかったです。それぞれの特徴を理解しておけば、保存したいデータの内容や使う環境に応じて正しく選べるようになりますよ。」

生徒

「json が他の言語でも扱えるというのは、たしかにいろいろな場面で使えそうですね。Web アプリでデータをやり取りするときとか便利そうです。」

先生

「その通りです。逆に Python だけで閉じた処理なら pickle がとても楽ですよ。型の情報まで全部保存できるので、再現性が高いんです。」

生徒

「でも pickle は信頼できるデータじゃないと危険、という点も覚えておかないとですね。」

先生

「うん、その点は重要です。pickle は安全に扱える場面で使い、外部とのやり取りがある場合には json を中心に使うのが基本です。」

生徒

「複数の辞書をリストでまとめて保存する方法も役に立ちそうです。データベースみたいに扱えますね!」

先生

「そうですね。辞書やリストを組み合わせることで、多くの情報を柔軟に扱えるようになります。今回学んだことをいろんなコードで試してみてください。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Pythonで辞書データをファイルに保存するにはどんな方法がありますか?

Pythonで辞書をファイルに保存する代表的な方法は「pickle」と「json」の2つです。pickleはPython専用形式、jsonはテキスト形式で他の言語とも互換性があります。
コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

関連記事:
カテゴリの一覧へ
新着記事
New1
PHP
PHPのマルチバイト文字列を正しく扱う方法!初心者向けにmb_strlenとmb_substrをやさしく解説
New2
PHP
PHP の break, continue の使い方を完全解説!初心者でもわかるループ制御
New3
Python
Pythonで日本の元号を扱う方法を徹底解説!令和・平成の変換もバッチリ対応
New4
Python
Pythonの三項演算子とは?一行で条件分岐を記述する方法
-
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonで辞書のキー・値・アイテムを取得する方法(keys(), values())
No.2
Java&Spring記事人気No2
Python
Pythonでエラースタックトレースを表示・取得する方法を徹底解説!初心者向け例外処理入門
No.3
Java&Spring記事人気No3
Python
Pythonで辞書のネスト構造(入れ子辞書)を扱う方法 初心者向け完全ガイド
No.4
Java&Spring記事人気No4
Python
PythonでMySQLに接続する方法を完全解説!初心者でもわかるpymysqlの基本
No.5
Java&Spring記事人気No5
Python
Pythonのライブラリとは?標準ライブラリとサードパーティライブラリの違いを初心者向けに解説!
No.6
Java&Spring記事人気No6
PHP
PHPで画像ファイルをアップロードする方法を初心者向けに徹底解説!わかりやすい画像処理入門
No.7
Java&Spring記事人気No7
PHP
PHP の日付と時間の取得(date, time, strtotime)を完全解説!初心者でもわかる使い方
No.8
Java&Spring記事人気No8
PHP
PHP の基本構文(開始タグ・コメント・インデント)を完全ガイド!初心者向け解説
-
-