The Dictionary<TKey, TValue> Class in C# is a collection of Keys and Values. It is a generic collection class in the System.Collection.Generics namespace. The Dictionary <TKey, TValue> generic class provides a mapping from a set of keys to a set of values. Each addition to the dictionary consists of a value and its associated key. Retrieving a value by using its key is very fast, close to O(1) because the Dictionary class is implemented as a hash table. Every key in a Dictionary <TKey, TValue> must be unique according to the dictionary’s equality comparer.
Note: A key cannot be null, but a value can be if the value type TValue is a reference type.
Parameters:
- TKey : Denotes the type of the keys in the dictionary.
- TValue : Denotes the type of the values in the dictionary.
Since the Dictionary<TKey, TValue> is a collection of keys and values, the element type is not the type of the key or the type of the value. Instead, the element type is a KeyValuePair <TKey, TValue> of the key type and the value type.
Constructors
| Constructor | Description | ||||
|---|---|---|---|---|---|
| Dictionary<TKey, TValue>() | Initializes a new instance of the Dictionary<TKey, TValue> class that is empty, has the default initial capacity, and uses the default equality comparer for the key type. | ||||
| Dictionary<TKey,TValue>(IDictionary<TKey,TValue>) | Initializes a new instance of the Dictionary<TKey,TValue> class that contains elements copied from the specified IDictionary<TKey,TValue> and uses the default equality comparer for the key type. | ||||
| Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer<TKey>) | Initializes a new instance of the Dictionary<TKey,TValue> class that contains elements copied from the specified IDictionary<TKey,TValue> and uses the specified IEqualityComparer<T>. | ||||
| Dictionary<TKey,TValue>(IEqualityComparer<TKey>) | Initializes a new instance of the Dictionary<TKey,TValue> class that is empty, has the default initial capacity, and uses the specified IEqualityComparer<T>. | ||||
| Dictionary<TKey,TValue>(Int32) | Initializes a new instance of the Dictionary| Dictionary<TKey,TValue>(Int32, IEqualityComparer<TKey>) | Initializes a new instance of the Dictionary<TKey,TValue> class that is empty, has the specified initial capacity, and uses the specified IEqualityComparer<T>. | Dictionary<TKey,TValue>(SerializationInfo, StreamingContext) | Initializes a new instance of the Dictionary<TKey,TValue> class with serialized data. | |
Example:
// C# code to create a Dictionaryusing System;using System.Collections.Generic; class GFG { // Driver code public static void Main() { // Create a new dictionary of // strings, with string keys. Dictionary<string, string> myDict = new Dictionary<string, string>(); // Adding key/value pairs in myDict myDict.Add("1", "C"); myDict.Add("2", "C++"); myDict.Add("3", "Java"); myDict.Add("4", "Python"); myDict.Add("5", "C#"); myDict.Add("6", "HTML"); // To get count of key/value pairs in myDict Console.WriteLine("Total key/value pairs"+ " in myDict are : " + myDict.Count); // Displaying the key/value pairs in myDict Console.WriteLine("\nThe key/value pairs"+ " in myDict are : "); foreach(KeyValuePair<string, string> kvp in myDict) { Console.WriteLine("Key = {0}, Value = {1}", kvp.Key, kvp.Value); } }} |
Total key/value pairs in myDict are : 6 The key/value pairs in myDict are : Key = 1, Value = C Key = 2, Value = C++ Key = 3, Value = Java Key = 4, Value = Python Key = 5, Value = C# Key = 6, Value = HTML
Properties
| Properties | Description |
|---|---|
| Comparer | Gets the IEqualityComparer<TKey,TValue> that is used to determine equality of keys for the dictionary. |
| Count | Gets the number of key/value pairs contained in the Dictionary<TKey,TValue>. |
| Item[TKey] | Gets or sets the value associated with the specified key. |
| Keys | Gets a collection containing the keys in the Dictionary<TKey,TValue>. |
| Values | Gets a collection containing the values in the Dictionary<TKey,TValue>. |
Example 1:
// C# code to get the keys // in the Dictionaryusing System;using System.Collections.Generic; class GFG { // Driver code public static void Main() { // Create a new dictionary of // strings, with string keys. Dictionary<string, string> myDict = new Dictionary<string, string>(); // Adding key/value pairs in myDict myDict.Add("1", "C"); myDict.Add("2", "C++"); myDict.Add("3", "Java"); myDict.Add("4", "Python"); myDict.Add("5", "C#"); myDict.Add("6", "HTML"); // To get count of key/value pairs in myDict Console.WriteLine("Total key/value pairs"+ " in myDict are : " + myDict.Count); // To get the keys alone, use the Keys property. Dictionary<string, string>.KeyCollection keyColl = myDict.Keys; // The elements of the KeyCollection // are strongly typed with the type // that was specified for dictionary keys. foreach(string s in keyColl) { Console.WriteLine("Key = {0}", s); } }} |
Total key/value pairs in myDict are : 6 Key = 1 Key = 2 Key = 3 Key = 4 Key = 5 Key = 6
Example 2:
// C# code to get the values// in the Dictionaryusing System;using System.Collections.Generic; class GFG { // Driver code public static void Main() { // Create a new dictionary of // strings, with string keys. Dictionary<string, string> myDict = new Dictionary<string, string>(); // Adding key/value pairs in myDict myDict.Add("1", "C"); myDict.Add("2", "C++"); myDict.Add("3", "Java"); myDict.Add("4", "Python"); myDict.Add("5", "C#"); myDict.Add("6", "HTML"); // To get count of key/value pairs in myDict Console.WriteLine("Total key/value pairs"+ " in myDict are : " + myDict.Count); // To get the values alone, use the Values property. Dictionary<string, string>.ValueCollection valueColl = myDict.Values; // The elements of the ValueCollection // are strongly typed with the type // that was specified for dictionary values. foreach(string s in valueColl) { Console.WriteLine("Value = {0}", s); } }} |
Total key/value pairs in myDict are : 6 Value = C Value = C++ Value = Java Value = Python Value = C# Value = HTML
Methods
| Method | Description |
|---|---|
| Add(TKey, TValue) | Adds the specified key and value to the dictionary. |
| Clear() | Removes all keys and values from the Dictionary<TKey,TValue>. |
| ContainsKey(TKey) | Determines whether the Dictionary<TKey,TValue> contains the specified key. |
| ContainsValue(TValue) | Determines whether the Dictionary<TKey,TValue> contains a specific value. |
| Equals(Object) | Determines whether the specified object is equal to the current object. |
| GetEnumerator() | Returns an enumerator that iterates through the Dictionary<TKey,TValue> . |
| GetHashCode() | Serves as the default hash function. |
| GetObjectData(SerializationInfo, StreamingContext) | Implements the ISerializable interface and returns the data needed to serialize the Dictionary<TKey,TValue> instance. |
| GetType() | Gets the Type of the current instance. |
| MemberwiseClone() | Creates a shallow copy of the current Object. |
| OnDeserialization(Object) | Implements the ISerializable interface and raises the deserialization event when the deserialization is complete. |
| Remove(TKey) | Removes the value with the specified key from the Dictionary<TKey,TValue>. |
| ToString() | Returns a string that represents the current object. |
| TryGetValue(TKey, TValue) | Gets the value associated with the specified key. |
Example 1:
// C# code to remove all entries// from Dictionaryusing System;using System.Collections.Generic; class GFG { // Driver code public static void Main() { // Create a new dictionary of // strings, with string keys. Dictionary<string, string> myDict = new Dictionary<string, string>(); // Adding key/value pairs in myDict myDict.Add("1", "C"); myDict.Add("2", "C++"); myDict.Add("3", "Java"); myDict.Add("4", "Python"); myDict.Add("5", "C#"); myDict.Add("6", "HTML"); // To get count of key/value pairs in myDict Console.WriteLine("Total key/value pairs "+ "in myDict are : " + myDict.Count); myDict.Clear(); // To get count of key/value pairs in myDict Console.WriteLine("Total key/value pairs in "+ "myDict after Clear() operation are : " + myDict.Count); }} |
Total key/value pairs in myDict are : 6 Total key/value pairs in myDict after Clear() operation are : 0
Example 2:
// C# code to remove the entry with// the specified key from the Dictionaryusing System;using System.Collections.Generic; class GFG { // Driver code public static void Main() { // Create a new dictionary of // strings, with string keys. Dictionary<string, string> myDict = new Dictionary<string, string>(); // Adding key/value pairs in myDict myDict.Add("1", "C"); myDict.Add("2", "C++"); myDict.Add("3", "Java"); myDict.Add("4", "Python"); myDict.Add("5", "C#"); myDict.Add("6", "HTML"); // To get count of key/value pairs in myDict Console.WriteLine("Total key/value pairs "+ "in myDict are : " + myDict.Count); // Remove the entry with the // specified key from the Dictionary myDict.Remove("Russia"); // To get count of key/value pairs in myDict Console.WriteLine("Total key/value pairs in"+ " myDict after Remove() operation are : " + myDict.Count); }} |
Total key/value pairs in myDict are : 6 Total key/value pairs in myDict after Remove() operation are : 6
Reference:
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.


