Day 2・データ構造 — AI入出力の正体
辞書/オブジェクト — キーと値の住所録
「名前(キー)で中身を呼び出す」入れ物、辞書(オブジェクト)を住所録やロッカーでつかむ。
順番より「名前で探したい」とき
リストは順番で管理する入れ物でした。でも現実には「順番はどうでもいいから、名前で一発で探したい」ことがよくあります。たとえば友だちの電話番号。「上から3番目の人の番号」ではなく「田中さんの番号」で探したいですよね。そこで使うのが「辞書(または オブジェクト、連想配列)」です。
たとえるなら
辞書は「住所録」です。「田中さん」という名札(キー)を引くと、その人の住所(値)がパッと出てくる。番号で覚える必要はなく、名前さえ分かれば中身を取り出せます。国語辞典で「りんご」を引くと意味が出るのと同じ仕組みです。
辞書は「キー(名札)」と「値(中身)」のペアで出来ています。キーは中身を呼び出すための名前、値はその中身です。ロッカーで言えば、キーが「ロッカーの番号や名前」、値が「中に入っている荷物」。名札を指定すれば、その中身がすぐ取り出せます。
user = {
"name": "田中",
"age": 28,
"city": "東京"
}
// user の "name" を引く -> "田中"
// user の "city" を引く -> "東京"リストで人の情報を持つと…
0番目が名前?1番目が年齢?意味が順番頼みで分かりにくい。
user = ["田中", 28, "東京"]
// user[1] は…年齢だっけ町だっけ?辞書なら名前で意味が分かる
キーが名札になり、何の値かが一目で分かる。
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に噛み砕いてもらいましょう。
理解度チェック
答えられれば、面接で説明できる状態に一歩近づきます。
辞書(オブジェクト)がリストと違う、いちばんの特徴は?
次のうち「辞書」で持つのが自然なデータはどれ?
辞書(オブジェクト)とは何か、たとえを使って、リストとの違いも交えて説明してください。
記述式です。まず自分の言葉で答えを考えてから、模範解答を開いて自己採点してください。