Day11 Dictionary 練習問題と解答解説
Day11 で学んだ Dictionary<TKey, TValue> / Add / Remove / ContainsKey を確実に定着させるために、 初心者でも理解しやすい練習問題と丁寧な解答・解説をまとめています。 Dictionary は「キーで高速アクセスできる」強力なデータ構造なので、ここでしっかり身につけてください。
Dictionary の基本を確認する
問題
文字列キー・文字列値の Dictionary を作り、 “Taro” → “090-1111-2222” “Hanako” → “080-3333-4444” を登録して、すべて表示してください。
解答と解説
Dictionary<string, string> phoneBook = new Dictionary<string, string>();
phoneBook.Add("Taro", "090-1111-2222");
phoneBook.Add("Hanako", "080-3333-4444");
foreach (var entry in phoneBook)
{
Console.WriteLine(entry.Key + " : " + entry.Value);
}
C#Dictionary は「キーと値のペア」を管理するコレクションです。 foreach で回すときは entry.Key と entry.Value を使います。
Add の理解を確認する
問題
学生の名前と点数を管理する Dictionary を作り、 “Taro” → 85 “Hanako” → 92 “Ken” → 76 を登録して表示してください。
解答と解説
Dictionary<string, int> scores = new Dictionary<string, int>();
scores.Add("Taro", 85);
scores.Add("Hanako", 92);
scores.Add("Ken", 76);
foreach (var entry in scores)
{
Console.WriteLine(entry.Key + " : " + entry.Value);
}
C#Add は「キーが重複するとエラー」になるため、 実務では ContainsKey と組み合わせて使うことが多いです。
Remove の理解を確認する
問題
Dictionary fruits に “Apple” → 150 “Banana” → 120 “Orange” → 180 が入っています。 “Banana” を削除してすべて表示してください。
解答と解説
Dictionary<string, int> fruits = new Dictionary<string, int>()
{
{ "Apple", 150 },
{ "Banana", 120 },
{ "Orange", 180 }
};
fruits.Remove("Banana");
foreach (var entry in fruits)
{
Console.WriteLine(entry.Key + " : " + entry.Value);
}
C#Remove は「キーを指定して削除」します。 削除後にそのキーを使うとエラーになるため注意が必要です。
ContainsKey の理解を確認する
問題
Dictionary items に “Pen” → 100 “Notebook” → 200 “Eraser” → 50 が入っています。 “Notebook” が登録されているか判定して結果を表示してください。
解答と解説
Dictionary<string, int> items = new Dictionary<string, int>()
{
{ "Pen", 100 },
{ "Notebook", 200 },
{ "Eraser", 50 }
};
bool exists = items.ContainsKey("Notebook");
Console.WriteLine(exists);
C#ContainsKey は「キーが存在するかどうか」を true / false で返します。 Dictionary を安全に扱うための必須テクニックです。
応用問題:電話帳の操作
問題
次の操作を行って電話帳を完成させてください。
- “Taro” → “090-1111-2222”
- “Hanako” → “080-3333-4444”
- “Ken” → “070-5555-6666”
- “Hanako” を削除
- “Taro” が登録されているか確認
- 最後にすべて表示
解答と解説
Dictionary<string, string> phoneBook = new Dictionary<string, string>();
phoneBook.Add("Taro", "090-1111-2222");
phoneBook.Add("Hanako", "080-3333-4444");
phoneBook.Add("Ken", "070-5555-6666");
phoneBook.Remove("Hanako");
if (phoneBook.ContainsKey("Taro"))
{
Console.WriteLine("Taro は登録されています");
}
foreach (var entry in phoneBook)
{
Console.WriteLine(entry.Key + " : " + entry.Value);
}
C#ContainsKey を使うことで「存在しないキーにアクセスするエラー」を防げます。
応用問題:学生成績管理
問題
学生の成績を管理する Dictionary を作り、 “Taro” → 85 “Hanako” → 92 “Ken” → 76 を登録し、 “Ken” を削除して、 “Hanako” の点数を表示してください。
解答と解説
Dictionary<string, int> scores = new Dictionary<string, int>();
scores.Add("Taro", 85);
scores.Add("Hanako", 92);
scores.Add("Ken", 76);
scores.Remove("Ken");
if (scores.ContainsKey("Hanako"))
{
Console.WriteLine("Hanako の点数: " + scores["Hanako"]);
}
C#Dictionary は「キーで高速アクセスできる」ため、 成績管理のような検索が多い処理に非常に向いています。
Day11 練習問題まとめ
Day11 の練習問題では、次のポイントを確認しました。
Dictionary<TKey, TValue> → キーと値のペアを管理 Add → 登録(キー重複は不可) Remove → 削除 ContainsKey → 存在確認(安全なアクセスの必須テクニック)
これらを組み合わせることで、 電話帳や学生成績管理など、実用的なデータ管理が簡単に実現できます。
