辞書化とは?プログラミング初心者が必ず覚える「キーと値」の考え方

辞書化とは?プログラミング初心者が必ず覚える「キーと値」の考え方 知識
辞書化とは?プログラミング初心者が必ず覚える「キーと値」の考え方
この記事は約6分で読めます。

未経験でも気軽に!サブスク型プログラミングスクール【Freeks】

困ってた自分に届けたい話

PHPでは「連想配列」って言ってたけど、Pythonでは「辞書」?
JavaScriptでは「オブジェクト」?……それって全部同じもの?違うの?

最初はその違いがわからなくて、APIから返ってきたレスポンスを読み間違えそうになりました。
指定の値を取り出そうとしても、「user[0]」「user.name」など書き方がバラバラで混乱。

結局、辞書化ってなに?
ちゃんと理解しておかないと、中身の意味を間違えて使ってしまうかも…と不安になりました。

てんハロ運営者
てんハロ運営者

この記事は、同じように困っていた方への備忘録兼シェアとして書いています。

辞書化とは「キーと値のセット」にすること

辞書化とは、データを「キー(名前)」と「値(データ)」のペアで管理すること。
これにより、意味のある形でデータを整理できます。

※ 下記の説明コードはPythonです。

配列と辞書の違い

このように配列ではデータの意味が不明確になりがち。

user = ["田中", 28, "エンジニア"]

print(user[0])  # 名前の項目が入っているが、これだけでは見てもわからない

下記のように、辞書化すると読みやすくなります。
キーで意味を伝えられるため、保守性・可読性が大きく向上します。

user = {
    "名前": "田中",
    "年齢": 28,
    "職業": "エンジニア"
}

print(user["名前"])  # キーが「名前」だと"田中"とかが入っているとすぐわかる

辞書化するメリット

① 変数名でデータの意味がすぐわかる

配列では、インデックス番号(0番目、1番目など)でしかアクセスできないため、その値が何を表しているかが不明確です。辞書型にすることで、名前でアクセスできるようになり、読みやすくミスが減るコードになります。

# 配列だと
user = ["田中", 28, "エンジニア"]
print(user[1])  # これは「年齢」だけど、見ただけではわからない

# 辞書化すれば
user = {"名前": "田中", "年齢": 28, "職業": "エンジニア"}
print(user["年齢"])  # 28(意味が明確)

② 値の追加・変更が簡単

キーを指定して値を直接書き換えることができるため、データの更新がシンプルです。
配列だと、インデックスを探して書き換える必要があり、ミスが起こりやすいです。

# 年齢を29歳に更新
user["年齢"] = 29

③ キーを使って素早くデータを探せる

辞書型は、キーを使って直接アクセスするため、検索が高速です。
配列のように「どこにあるかな」と探す必要がありません。

# すぐに「職業」を取得できる
print(user["職業"])  # "エンジニア"

さらに、.get() を使えば「キーがあるかどうか」のチェックも簡単にできます:

print(user.get("趣味", "情報なし"))  # → "情報なし"

④ JSON形式と相性が良く、Web開発に必須

Webアプリケーションでは、APIのリクエストやレスポンスでJSON形式(=辞書化された構造)がよく使われます。そのため、辞書型に慣れておくとフロントエンド⇔バックエンド間のデータのやりとりがスムーズになります。

{
  "name": "田中",
  "email": "tanaka@example.com"
}

このレスポンスを受け取ったフロント側の処理は、たとえば JavaScript なら下記のコード簡単で指定できます。辞書化されていることで、シンプルかつ直感的に扱えるのが大きなメリットです。

console.log(data.name);  //  "田中"

各言語の「辞書化」例

言語書き方構造の名前
Pythondict = {"key": "value"}辞書(dictionary)
JavaScriptconst obj = { key: "value" }オブジェクト(object)
PHP$arr = ["key" => "value"];連想配列(associative array)

応用:辞書の中にリスト・辞書を入れることもできる

user = {
    "名前": "田中",
    "スキル": ["Python", "Django"],
    "連絡先": {
        "メール": "tanaka@example.com",
        "電話": "090-XXXX-XXXX"
    }
}
てんハロ運営者
てんハロ運営者

おつかれさまでした!

更新をF5連打で待つの、そろそろやめませんか?
( ブログ更新をメールでそっとお知らせします🙇‍♂️ )

スパムはしません!詳細については、プライバシーポリシーをご覧ください。

コメント