バイブコーディングの土台

Day 2データ構造 — AI入出力の正体

辞書/オブジェクト — キーと値の住所録

「名前(キー)で中身を呼び出す」入れ物、辞書(オブジェクト)を住所録やロッカーでつかむ。

順番より「名前で探したい」とき

リストは順番で管理する入れ物でした。でも現実には「順番はどうでもいいから、名前で一発で探したい」ことがよくあります。たとえば友だちの電話番号。「上から3番目の人の番号」ではなく「田中さんの番号」で探したいですよね。そこで使うのが「辞書(または オブジェクト、連想配列)」です。

たとえるなら

辞書は「住所録」です。「田中さん」という名札(キー)を引くと、その人の住所(値)がパッと出てくる。番号で覚える必要はなく、名前さえ分かれば中身を取り出せます。国語辞典で「りんご」を引くと意味が出るのと同じ仕組みです。

辞書は「キー(名札)」と「値(中身)」のペアで出来ています。キーは中身を呼び出すための名前、値はその中身です。ロッカーで言えば、キーが「ロッカーの番号や名前」、値が「中に入っている荷物」。名札を指定すれば、その中身がすぐ取り出せます。

TEXT
user = {
  "name": "田中",
  "age": 28,
  "city": "東京"
}

// user の "name" を引く -> "田中"
// user の "city" を引く -> "東京"
波カッコ { } で囲み、"キー": 値 のペアを並べる。これが辞書の基本形。

リストで人の情報を持つと…

0番目が名前?1番目が年齢?意味が順番頼みで分かりにくい。

TEXT
user = ["田中", 28, "東京"]
// user[1] は…年齢だっけ町だっけ?

辞書なら名前で意味が分かる

キーが名札になり、何の値かが一目で分かる。

TEXT
user = { "name": "田中", "age": 28, "city": "東京" }
// user["age"] -> はっきり「年齢」

使い分けはシンプルです。「同じ仲間が順番に並ぶ」ならリスト。「1つのものの、いろいろな属性(名前・年齢・住所…)をまとめる」なら辞書。プレイリスト(曲の並び)はリスト、1人分のプロフィール(名前と年齢と住所)は辞書、とイメージすると迷いません。

  • 辞書(オブジェクト)= キー(名札)と値(中身)のペアの集まり
  • 順番ではなく「名前」で中身を取り出す(住所録・国語辞典)
  • リスト=同じ仲間の行列 / 辞書=1つのものの属性まとめ
  • 波カッコ { } と "キー": 値 が見えたら辞書だと気づけばOK

同じキーは1つだけ

住所録に同じ名札の欄が2つあったら、どっちを見ればいいか分からなくなります。辞書のキーは基本ダブりなし。「name というキーは1つ」と覚えておくと、後でデータがおかしいときの原因に気づけます。

AIにはこう頼む

「ユーザーの名前・年齢・住んでいる街をまとめたオブジェクト(辞書)を作って」と頼めます。返ってきたコードに { "name": ... } の形が見えたら「名札つきで属性をまとめているな」と読めます。細かい書き方は言語で違いますが(Pythonでは辞書、TypeScriptではオブジェクト)、考え方は同じです。

なぜ大事か

AIやAPIが返す1件分のデータは、ほぼ必ず辞書の形です。「この項目は name というキーで入っている」と分かれば、欲しい値をピンポイントで取り出せます。逆に知らないと、AIのコードのどこを直せばいいか永遠に分かりません。

読んでも腑に落ちない所は、AIに噛み砕いてもらいましょう。

理解度チェック

答えられれば、面接で説明できる状態に一歩近づきます。

Q1

辞書(オブジェクト)がリストと違う、いちばんの特徴は?

Q2

次のうち「辞書」で持つのが自然なデータはどれ?

Q3

辞書(オブジェクト)とは何か、たとえを使って、リストとの違いも交えて説明してください。

記述式です。まず自分の言葉で答えを考えてから、模範解答を開いて自己採点してください。