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

Dictionary key-value collection in C Sharp (C#) - Step-by-Step Execution

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
Concept Flow - Dictionary key-value collection
Create empty Dictionary
Add key-value pairs
Access value by key
Update value by key
Remove key-value pair
Check if key exists
End
This flow shows how a Dictionary is created, used to store key-value pairs, accessed, updated, and managed.
Execution Sample
C Sharp (C#)
var dict = new Dictionary<string, int>();
dict["apple"] = 3;
dict["banana"] = 5;
int count = dict["apple"];
dict["apple"] = 4;
dict.Remove("banana");
This code creates a dictionary, adds two fruits with counts, reads a count, updates a count, and removes a fruit.
Execution Table
StepActionDictionary StateVariable 'count' Value
1Create empty dictionary{}N/A
2Add key 'apple' with value 3{"apple":3}N/A
3Add key 'banana' with value 5{"apple":3, "banana":5}N/A
4Read value for key 'apple'{"apple":3, "banana":5}3
5Update value for key 'apple' to 4{"apple":4, "banana":5}3
6Remove key 'banana'{"apple":4}3
💡 All steps executed; dictionary now has one key 'apple' with value 4.
Variable Tracker
VariableStartAfter Step 2After Step 3After Step 4After Step 5After Step 6
dict{}{"apple":3}{"apple":3, "banana":5}{"apple":3, "banana":5}{"apple":4, "banana":5}{"apple":4}
countN/AN/AN/A333
Key Moments - 3 Insights
Why does 'count' keep the old value 3 even after updating 'apple' to 4?
Because 'count' was assigned before the update (Step 4), it holds the old value. The dictionary update (Step 5) does not change 'count' automatically.
What happens if you try to access a key that does not exist?
Accessing a non-existent key throws an exception. You must check if the key exists before accessing it to avoid errors.
Does removing a key affect other keys in the dictionary?
No, removing 'banana' only deletes that key-value pair. Other keys like 'apple' remain unchanged.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the value of 'count' after Step 4?
A3
B4
C5
DN/A
💡 Hint
Check the 'Variable 'count' Value' column at Step 4 in the execution table.
At which step is the key 'banana' removed from the dictionary?
AStep 4
BStep 6
CStep 5
DStep 3
💡 Hint
Look at the 'Action' column for the removal operation in the execution table.
If you add a new key 'orange' with value 7 after Step 6, what will the dictionary state be?
A{"apple":4, "banana":5, "orange":7}
B{"banana":5, "orange":7}
C{"apple":4, "orange":7}
D{"orange":7}
💡 Hint
After Step 6, 'banana' is removed, so adding 'orange' adds to existing keys.
Concept Snapshot
Dictionary key-value collection in C#:
- Create with: var dict = new Dictionary<TKey, TValue>();
- Add/update: dict[key] = value;
- Access: value = dict[key];
- Remove: dict.Remove(key);
- Check key: dict.ContainsKey(key);
Keys are unique; values can be updated anytime.
Full Transcript
This visual execution shows how a Dictionary in C# works step-by-step. We start by creating an empty dictionary. Then we add two key-value pairs: 'apple' with 3 and 'banana' with 5. Next, we read the value for 'apple' and store it in a variable 'count'. After that, we update the value for 'apple' to 4. Finally, we remove the key 'banana'. The variable 'count' keeps the old value 3 because it was assigned before the update. Removing 'banana' does not affect 'apple'. This trace helps understand how dictionaries store and manage key-value pairs in C#.

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