C# Dictionary Examples
C# Basic
C# Data Type
C# OOP
C# IO
C# Graphics & UI
C# Advanced
To update the value stored in a Dictionary<TKey, TValue>
in C#, you can simply assign a new value to the corresponding key. Here's an example:
Dictionary<string, int> dict = new Dictionary<string, int>(); dict.Add("apple", 5); dict.Add("banana", 7); // Update the value of an existing key dict["apple"] = 10;
In this example, we first create a dictionary with two key-value pairs, and then update the value of the "apple"
key to 10
.
To transform a Dictionary<TKey, TValue>
to a Dictionary<TValue, TKey>
in C#, you can use LINQ to project the key-value pairs into new key-value pairs with their values and keys swapped, and then construct a new dictionary from the result. Here's an example:
Dictionary<string, int> dict = new Dictionary<string, int>(); dict.Add("apple", 5); dict.Add("banana", 7); // Transform the dictionary Dictionary<int, string> newDict = dict.ToDictionary(pair => pair.Value, pair => pair.Key);
In this example, we first create a dictionary with two key-value pairs, and then transform it into a new dictionary where the values become the keys and the keys become the values.
To split a Dictionary<TKey, TValue>
into N
sub-dictionaries in C#, you can use LINQ to group the key-value pairs by their index modulo N
, and then construct a dictionary for each group. Here's an example:
Dictionary<int, string> dict = new Dictionary<int, string>(); dict.Add(1, "apple"); dict.Add(2, "banana"); dict.Add(3, "cherry"); dict.Add(4, "date"); dict.Add(5, "elderberry"); dict.Add(6, "fig"); int numGroups = 3; var subDicts = dict.GroupBy(pair => pair.Key % numGroups) .Select(group => group.ToDictionary(pair => pair.Key, pair => pair.Value)) .ToList();
In this example, we first create a dictionary with six key-value pairs, and then split it into three sub-dictionaries. The GroupBy
method groups the key-value pairs by their index modulo N
, and the Select
method constructs a dictionary for each group using the ToDictionary
method. The resulting subDicts
variable is a List
of Dictionary<int, string>
objects, each representing one of the sub-dictionaries. Note that this code assumes that the dictionary has at least N
key-value pairs. If it has fewer, some of the sub-dictionaries will be empty.
How to create a Dictionary in C#: Creating a Dictionary involves specifying the key and value types.
Dictionary<string, int> myDictionary = new Dictionary<string, int>();
Adding and removing items from a Dictionary in C#:
Adding and removing items from a Dictionary is done using the Add
and Remove
methods.
myDictionary.Add("One", 1); myDictionary.Remove("One");
Accessing values in a Dictionary in C#: Accessing values in a Dictionary is done using the key.
int value = myDictionary["One"];
Iterating over a Dictionary in C#: Iterating over a Dictionary involves using a foreach loop.
foreach (var pair in myDictionary) { Console.WriteLine($"{pair.Key}: {pair.Value}"); }
Checking if a key exists in a Dictionary in C#:
Checking if a key exists in a Dictionary is done using the ContainsKey
method.
if (myDictionary.ContainsKey("One")) { // Key exists }
Using custom objects as keys in a Dictionary in C#:
Using custom objects as keys involves implementing GetHashCode
and Equals
methods.
Dictionary<MyCustomKey, string> customDictionary = new Dictionary<MyCustomKey, string>();
Sorting a Dictionary by key or value in C#: Sorting a Dictionary can be achieved by converting it to a sorted list.
var sortedByKey = myDictionary.OrderBy(x => x.Key).ToDictionary(x => x.Key, x => x.Value); var sortedByValue = myDictionary.OrderBy(x => x.Value).ToDictionary(x => x.Key, x => x.Value);
Dictionary initialization in C#: Initializing a Dictionary with values can be done using collection initializers.
Dictionary<string, int> initializedDictionary = new Dictionary<string, int> { { "One", 1 }, { "Two", 2 }, { "Three", 3 } };
Nested dictionaries in C#: Creating nested dictionaries involves using dictionaries as values.
Dictionary<string, Dictionary<string, int>> nestedDictionary = new Dictionary<string, Dictionary<string, int>>();
Handling duplicate keys in C# Dictionary: Handling duplicate keys can be done by checking for existing keys before adding.
if (!myDictionary.ContainsKey("One")) { myDictionary.Add("One", 1); }
Dictionary with case-insensitive keys in C#: Creating a case-insensitive Dictionary involves using a custom comparer.
Dictionary<string, int> caseInsensitiveDictionary = new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase);
ConcurrentDictionary usage in C#: Using ConcurrentDictionary when working with multiple threads to avoid race conditions.
ConcurrentDictionary<string, int> concurrentDictionary = new ConcurrentDictionary<string, int>();