この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:4
ページ更新者:atom
更新日時:2026-06-12 15:50:07

タイトル: dictの中身を確認する方法
SEOタイトル: Pythonで辞書(dict)の中身を確認する方法|keys・values・itemsの使い方

Pythonで辞書(dict)の中身を確認するには、キーの一覧を見る keys()、値の一覧を見る values()、キーと値のペアを見る items()、そして全体をそのまま表示する print(辞書) を使い分けるのが基本です。要素数は len()、特定のキーがあるかどうかは in で確認でき、見やすく整形したいときは pprintjson.dumps() が便利です。

この記事の要点
  • キーの一覧は 辞書.keys()、値の一覧は 辞書.values() で取得できます。
  • キーと値のペアは 辞書.items() で取得し、for ループで展開して扱うのが定番です。
  • 辞書全体をそのまま見たいときは print(辞書)、要素数は len(辞書) で確認します。
  • 特定のキーがあるかは キー in 辞書 で判定できます(値の存在確認とは別です)。
  • ネストが深い辞書や大きい辞書は、pprintjson.dumps(辞書, indent=2) で整形すると読みやすくなります。
  • keys() / values() / items() はビューオブジェクトを返し、辞書の変更が反映される点に注意します。

 

以下では、サンプルとして次の辞書を使って中身を確認する方法を順に見ていきます。

user = {

    "name": "Sato",

    "age": 28,

    "city": "Tokyo",

}

 

キーの一覧を確認する:keys()

辞書にどんなキー(項目名)が登録されているかを知りたいときは、keys() メソッドを使います。キーだけをまとめて取得できます。

print(user.keys())

 

# dict_keys(['name', 'age', 'city'])

 

出力の dict_keys([...]) という表記が示すように、keys() はリストそのものではなく「ビューオブジェクト」を返します。リストとして扱いたい場合は list(user.keys()) のように変換します。for ループでそのまま回すこともできます。

for key in user.keys():

    print(key)

 

# name

# age

# city

 

なお、辞書をそのまま for で回すとキーが順に取り出されるため、for key in user: と書いても同じ結果になります。

値の一覧を確認する:values()

キーに対応する値だけをまとめて確認したいときは、values() メソッドを使います。

print(user.values())

 

# dict_values(['Sato', 28, 'Tokyo'])

 

こちらも dict_values([...]) というビューオブジェクトが返ります。値の一覧をリストとして使いたい場合は list(user.values()) と変換します。たとえば「合計を計算したい」「特定の値が含まれるか調べたい」といった用途で役立ちます。

キーと値のペアを確認する:items()

キーと値をセットで確認したいときは、items() メソッドが最も便利です。(キー, 値) のタプルが順に取り出せるため、for ループと組み合わせて一覧表示するのが定番です。

for key, value in user.items():

    print(key, ":", value)

 

# name : Sato

# age : 28

# city : Tokyo

 

items() も同様にビューオブジェクト(dict_items)を返します。key, value のように2つの変数で受け取ることで、ペアを分解しながら扱える点がポイントです。

辞書全体をそのまま表示する:print(辞書)

細かく分解せず、辞書全体をひと目で確認したいときは print() に辞書をそのまま渡します。

print(user)

 

# {'name': 'Sato', 'age': 28, 'city': 'Tokyo'}

 

波かっこ { } で囲まれた形でキーと値のペアが表示されます。小さな辞書であればこの方法が最も手軽です。値の型を含めて確認したい場合は、後述の pprintjson.dumps() による整形表示も検討するとよいでしょう。

要素の数を確認する:len()

辞書にいくつのキー(要素)が登録されているかは、len() 関数で確認できます。返るのはキーと値のペアの数です。

print(len(user))

 

# 3

 

辞書が空かどうかを判定したい場合は len(user) == 0 でも判定できますが、if not user: のように書くと、空の辞書のときだけ処理を分岐させることができます。

特定のキーがあるか確認する:in

あるキーが辞書に存在するかどうかは、in 演算子で確認します。存在すれば True、なければ False が返ります。

print("name" in user)    # True

print("email" in user)  # False

 

辞書に対する in は「キー」を対象に判定します。存在しないキーへ user["email"] のように直接アクセスすると KeyError になるため、アクセス前に in でチェックするか、user.get("email") のように get() を使うのが安全です。なお、値の方が含まれているか調べたい場合は "Sato" in user.values() のように values() と組み合わせます(→ 関連: キーの存在チェック)。

見やすく整形して表示する:pprint / json.dumps()

辞書のネストが深かったり要素が多かったりすると、print() では1行に詰め込まれて読みにくくなります。そんなときは標準ライブラリの pprint モジュールを使うと、適度に改行されて見やすくなります。

from pprint import pprint

 

data = {"user": {"name": "Sato", "roles": ["admin", "editor"]}, "active": True}

pprint(data)

 

# {'active': True,

#  'user': {'name': 'Sato', 'roles': ['admin', 'editor']}}

 

もう一つの方法として、json モジュールの json.dumps()indent を指定すると、インデントの付いた整った形で表示できます。日本語をそのまま表示したい場合は ensure_ascii=False も併せて指定します。

import json

 

print(json.dumps(data, indent=2, ensure_ascii=False))

 

# {

#   "user": {

#     "name": "Sato",

#     "roles": [

#       "admin",

#       "editor"

#     ]

#   },

#   "active": true

# }

 

ただし json.dumps() はJSONの表記に変換するため、PythonでいうところのタプルやセットなどはJSONに対応しない場合があります。また Truetrue に変わるなど、Pythonの表記とは一部異なる点に注意してください。純粋にPythonの構造として見やすく表示したいだけなら pprint、設定ファイルのように整形して残したいなら json.dumps() といった使い分けが目安です。

用途別の比較表

ここまで紹介した方法を、目的別に整理すると次のようになります。

やりたいこと 書き方 返るもの・結果
キーの一覧を見る 辞書.keys() キーのビュー(dict_keys)
値の一覧を見る 辞書.values() 値のビュー(dict_values)
キーと値のペアを見る 辞書.items() (キー, 値) のビュー(dict_items)
全体をそのまま表示 print(辞書) 1行での辞書表示
要素数を数える len(辞書) ペアの個数(整数)
キーの存在確認 キー in 辞書 True / False
見やすく整形表示 pprint(辞書) / json.dumps(辞書, indent=2) 改行・字下げ付きの表示

 

確認時に気をつけたい落とし穴

注意点 内容
keys/valuesはビューオブジェクト keys()values()items() はリストではなく「ビューオブジェクト」を返します。ビューは元の辞書と連動しており、辞書を更新すると内容も変わります。インデックスでアクセスしたり、表示を固定したい場合は list(...) でリストに変換してから扱います。
大きい辞書をそのまま表示 要素数の多い辞書やネストが深い辞書を print() すると、画面いっぱいに1行で出力されて読みづらくなります。中身を確認する目的なら pprintjson.dumps(indent=2) で整形するか、len() で件数だけ把握する、list(辞書.items())[:5] のように一部だけ表示するといった工夫が有効です。
表示される順序について Python 3.7 以降では、辞書は要素を「追加した順(挿入順)」を保って表示されます。一方で、辞書はあくまでキーで値を取り出すためのデータ構造であり、並び順を前提にしたコードは避けるのが無難です。順序を意識して並べ替えたい場合は sorted() を使ってキーや値でソートしてから表示します。

 

よくある質問(FAQ)

Q. keys() の結果をリストのように添字でアクセスしたいのですが、エラーになります。
A. keys() が返すのはビューオブジェクトで、辞書.keys()[0] のようなインデックス指定はできません。list(辞書.keys())[0] のように、いったん list() でリストへ変換してからアクセスしてください。

Q. キーと値を同時に取り出すには items() と keys() のどちらを使うべきですか。
A. キーと値を両方使う処理なら items() が適しています。for key, value in 辞書.items(): と書けば、キーと値を一度に受け取れます。キーだけで十分なら keys()(または辞書をそのまま for で回す書き方)を使うとよいでしょう。

Q. print() の出力が見づらいときはどうすればよいですか。
A. pprint モジュールの pprint() を使うと、ネストした辞書が適度に改行されて読みやすくなります。インデント付きでJSONのように見たい場合は json.dumps(辞書, indent=2, ensure_ascii=False) も選択肢になります。用途に応じて使い分けてください。