Bird
Raised Fist0
C Sharp (C#)programming~5 mins

Dictionary key-value collection in C Sharp (C#)

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction

A dictionary stores pairs of keys and values so you can quickly find a value by its key.

When you want to look up a phone number by a person's name.
When you need to count how many times each word appears in a text.
When you want to store settings where each setting has a name and a value.
When you want to map product IDs to product details in a store.
When you want to cache data for fast access using unique keys.
Syntax
C Sharp (C#)
Dictionary<TKey, TValue> dictionaryName = new Dictionary<TKey, TValue>();
TKey is the type of the key, and TValue is the type of the value.
Keys must be unique; values can repeat.
Examples
This creates a dictionary where keys are names (strings) and values are ages (integers).
C Sharp (C#)
Dictionary<string, int> ages = new Dictionary<string, int>();
Adds a key "Alice" with value 30 to the dictionary.
C Sharp (C#)
ages.Add("Alice", 30);
Gets the age value for the key "Alice".
C Sharp (C#)
int age = ages["Alice"];
Checks if the key "Bob" exists in the dictionary.
C Sharp (C#)
bool hasBob = ages.ContainsKey("Bob");
Sample Program

This program creates a phone book dictionary, adds three contacts, and prints their numbers. It also lists all contacts.

C Sharp (C#)
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        Dictionary<string, string> phoneBook = new Dictionary<string, string>();
        phoneBook.Add("John", "555-1234");
        phoneBook.Add("Jane", "555-5678");
        phoneBook["Bob"] = "555-8765"; // Another way to add

        Console.WriteLine("John's number: " + phoneBook["John"]);

        if (phoneBook.ContainsKey("Jane"))
        {
            Console.WriteLine("Jane's number: " + phoneBook["Jane"]);
        }

        Console.WriteLine("All contacts:");
        foreach (var entry in phoneBook)
        {
            Console.WriteLine(entry.Key + ": " + entry.Value);
        }
    }
}
OutputSuccess
Important Notes

Trying to get a value with a key that does not exist will cause an error. Use ContainsKey to check first.

You can update a value by assigning a new value to an existing key.

Dictionaries are very fast for lookups compared to lists.

Summary

Dictionaries store data as key-value pairs for quick access.

Keys must be unique and are used to find values.

Use Add() to insert and indexer [] to get or set values.

Practice

(1/5)
1. What is the main purpose of a Dictionary in C#?
easy
A. To create graphical user interfaces
B. To store data in a sequential list
C. To perform mathematical calculations
D. To store data as key-value pairs for quick access

Solution

  1. Step 1: Understand the Dictionary concept

    A Dictionary stores data as pairs where each key is linked to a value for fast lookup.
  2. Step 2: Compare with other options

    Options B, C, and D describe lists, math, and UI, which are unrelated to Dictionary's purpose.
  3. Final Answer:

    To store data as key-value pairs for quick access -> Option D
  4. Quick Check:

    Dictionary = key-value pairs [OK]
Hint: Remember: Dictionary = keys + values for fast lookup [OK]
Common Mistakes:
  • Confusing Dictionary with List
  • Thinking Dictionary stores only values
  • Assuming Dictionary is for UI or math
2. Which of the following is the correct way to add a key-value pair to a Dictionary<int, string> named dict?
easy
A. dict.Add(1, "apple");
B. dict.Insert(1, "apple");
C. dict["1"] = "apple";
D. dict.Put(1, "apple");

Solution

  1. Step 1: Recall Dictionary methods

    The method to add a new key-value pair is Add(key, value).
  2. Step 2: Check options

    Only dict.Add(1, "apple"); uses Add. dict[1] = "apple"; uses indexer which sets or updates but is not the method to add explicitly.
  3. Final Answer:

    dict.Add(1, "apple"); -> Option A
  4. Quick Check:

    Add() method adds key-value pair [OK]
Hint: Use Add() to insert new pairs, indexer to update [OK]
Common Mistakes:
  • Using Insert or Put which don't exist
  • Confusing Add() with indexer for adding
  • Trying to add with wrong method name
3. What will be the output of this C# code?
var dict = new Dictionary<int, string>();
dict.Add(1, "one");
dict[2] = "two";
Console.WriteLine(dict[1] + ", " + dict[2]);
medium
A. two, one
B. 1, 2
C. one, two
D. Runtime error

Solution

  1. Step 1: Understand dictionary additions

    Key 1 is added with value "one" using Add(). Key 2 is set to "two" using indexer.
  2. Step 2: Check output of Console.WriteLine

    It prints values for keys 1 and 2 joined by comma: "one, two".
  3. Final Answer:

    one, two -> Option C
  4. Quick Check:

    dict[1] = one, dict[2] = two [OK]
Hint: Indexer sets or updates; Add inserts new pairs [OK]
Common Mistakes:
  • Confusing keys with values in output
  • Expecting keys printed instead of values
  • Thinking indexer causes error if key missing
4. What is wrong with this code snippet?
var dict = new Dictionary<int, string>();
dict.Add(1, "apple");
dict.Add(1, "banana");
medium
A. It will compile and run without errors
B. It causes a runtime exception due to duplicate key
C. It overwrites the first value with the second
D. It causes a compile-time error

Solution

  1. Step 1: Understand Add() behavior with duplicate keys

    Adding a key that already exists causes a runtime exception.
  2. Step 2: Check code behavior

    Second Add with key 1 throws an ArgumentException at runtime.
  3. Final Answer:

    It causes a runtime exception due to duplicate key -> Option B
  4. Quick Check:

    Duplicate keys cause runtime error [OK]
Hint: Add() fails if key exists; use indexer to overwrite [OK]
Common Mistakes:
  • Assuming Add overwrites existing key
  • Expecting compile-time error instead of runtime
  • Confusing Add with indexer behavior
5. Given a list of user IDs and names:
var users = new List<(int id, string name)> { (1, "Alice"), (2, "Bob"), (3, "Charlie") };

Which code correctly creates a Dictionary<int, string> mapping IDs to names using a dictionary comprehension style?
hard
A. var dict = users.ToDictionary(u => u.id, u => u.name);
B. var dict = new Dictionary<int, string>(); foreach(var u in users) dict.Add(u.name, u.id);
C. var dict = users.Select(u => new { u.id, u.name }).ToList();
D. var dict = new Dictionary<string, int>(); foreach(var u in users) dict[u.id] = u.name;

Solution

  1. Step 1: Understand ToDictionary usage

    ToDictionary converts a list to a dictionary by specifying key and value selectors.
  2. Step 2: Check each option

    var dict = users.ToDictionary(u => u.id, u => u.name); correctly maps id to name. var dict = new Dictionary<int, string>(); foreach(var u in users) dict.Add(u.name, u.id); swaps key and value and uses wrong types. var dict = users.Select(u => new { u.id, u.name }).ToList(); creates a list, not dictionary. var dict = new Dictionary<string, int>(); foreach(var u in users) dict[u.id] = u.name; has wrong dictionary types and indexer usage.
  3. Final Answer:

    var dict = users.ToDictionary(u => u.id, u => u.name); -> Option A
  4. Quick Check:

    ToDictionary creates dictionary from list [OK]
Hint: Use ToDictionary with key and value selectors [OK]
Common Mistakes:
  • Swapping key and value in Add
  • Using Select instead of ToDictionary
  • Mismatching dictionary key-value types