C# Dictionary

A Dictionary<TKey, TValue> is a generic collection that consists of elements as key/value pairs that are not sorted in an order. For example,

Dictionary<int, string> country = new Dictionary<int, string>();

Here, country is a dictionary that contains int type keys and string type values.


Create a Dictionary

To create a dictionary in C#, we need to use the System.Collections.Generic namespace. Here is how we can create a dictionary in C#.

// create a dictionary
Dictionary<dataType1, dataType2> dictionaryName = new Dictionary<dataType1, dataType2>();

Here,

  • dictionaryName - name of the dictionary
  • dataType1 - datatype of keys
  • dataType2 - datatype of values

Example: Create a Dictionary

using System;
using System.Collections;
class Program
{
    public static void Main()
    {
// create a dictionary Dictionary<int, string> country = new Dictionary<int, string>();
// add items to dictionary country.Add(5, "Brazil"); country.Add(3, "China"); country.Add(4, "Usa"); // print value having key is 3 Console.WriteLine("Value having key 3: " + country[3]); } }

Output

Value having key 3: China

In the above example, we have created a dictionary named country.

The keys are of int type and values are of string type.


Basic Operations on Dictionary

In C#, we can perform different operations on a dictionary. We will look at some commonly used Dictionary<TKey, TValue> operations in this tutorial:

  • Add Elements
  • Access Elements
  • Change Elements
  • Remove Elements

Let's see how we can perform these operations in detail.


Add Elements in Dictionary

C# provides the Add() method using which we can add elements in the dictionary. For example,

using System;
using System.Collections;
class Program
{
    public static void Main()
    {
        // create a dictionary 
        Dictionary<string, string> mySongs = new Dictionary<string, string>();

// add items to dictionary mySongs.Add("Queen", "Break Free"); mySongs.Add("Free", "All right now"); mySongs.Add("Pink Floyd", "The Wall");
} }

In the above example, we have created a Dictionary<TKey, TValue> named mySongs.

Here we have added key/value pairs using the Add() method where,

  • keys - "Queen", "Free" and "Pink Floyd"
  • values - "Break Free", "All right now" and "The Wall"

Another way to add Elements to Dictionary

Add Elements in a dictionary without using Add() method

We can add elements inside the dictionary without using the Add() method. For example,

using System;
using System.Collections;
class Program
{
    public static void Main()
    {
// create a dictionary and add elements Dictionary<string, string> songs = new Dictionary<string, string>() { { "Queen", "Break Free" }, { "Free", "All right now" } }
; } }

This is also called collection-initializer.


Access Dictionary Elements

We can access the elements inside the dictionary using it's keys. For example,

using System;
using System.Collections;
class Program
{
    public static void Main()
    {
        // create a dictionary 
        Dictionary<string, string> student = new Dictionary<string, string>();

        // add items to dictionary
        student.Add("Name", "Susan");
        student.Add("Faculty", "History");

// access the value having key "Name" Console.WriteLine(student["Name"]);
// access the value having key "Faculty" Console.WriteLine(student["Faculty"]);
} }

Output

Susan
History

In the above example, we have accessed the values of the dictionary using their keys:

  • student["Name"] - accesses the value whose key is "Name"
  • student["Faculty"] - accesses the value whose key is "Faculty"

Iterate through Dictionary

In C#, we can also loop through each element of the dictionary using a foreach loop. For example,

using System;
using System.Collections;
class Program
{
    public static void Main()
    {
        // create a dictionary 
        Dictionary<string, string> car = new Dictionary<string, string>();

        // add items to dictionary
        car.Add("Model", "Hyundai");
        car.Add("Price", "36K");

// iterate through the car dictionary foreach (KeyValuePair<string, string> items in car) { Console.WriteLine("{0} : {1}", items.Key, items.Value); }
} }

Output

Model : Hyundai
Price : 36K

In the above example, we have looped through car using a foreach loop.

Here, the Key and Value property returns a collection containing keys and values in the dictionary.


Change Dictionary Elements

We can change the value of elements in dictionary as:

using System;
using System.Collections;
class Program
{
    public static void Main()
    {
        // create a dictionary 
        Dictionary<string, string> car = new Dictionary<string, string>();

        // add items to dictionary
        car.Add("Model", "Hyundai");
        car.Add("Price", "36K");

        // print the original value
        Console.WriteLine("Value of Model before changing: " + car["Model"]);

// change the value of "Model" key to "Maruti" car["Model"] = "Maruti";
// print new updated value of "Model" Console.WriteLine("Value of Model after changing: " + car["Model"]); } }

Output

Value of Model before changing: Hyundai
Value of Model after changing: Maruti

Here, we have changed the value of the "Model" key in the car dictionary.


Remove Dictionary Elements

To remove the elements inside the dictionary we use:

  • Remove() - removes the key/value pair from the dictionary

For example,

using System;
using System.Collections;
class Program
{
    public static void Main()
    {
        // create a dictionary 
        Dictionary<string, string> employee = new Dictionary<string, string>();

        // add items to dictionary
        employee.Add("Name", "Marry");
        employee.Add("Role", "Manager");
        employee.Add("Address", "California");

        Console.WriteLine("Original Dictionary :");

        // iterate through the modified dictionary 
        foreach (KeyValuePair<string, string> items in employee)
        {
            Console.WriteLine("{0} : {1}", items.Key, items.Value);
        }

// remove value with key "Role" employee.Remove("Role");
Console.WriteLine("\nModified Dictionary :"); // iterate through the modified dictionary foreach (KeyValuePair<string, string> items in employee) { Console.WriteLine("{0} : {1}", items.Key, items.Value); } } }

Output

Original Dictionary :
Name : Marry
Role : Manager
Address : California

Modified Dictionary :
Name : Marry
Address : California

In the above example, we have removed the element whose key is "Role".

Here, employee.Remove("Role") removes the key/value pair "Role" : "Manager" from the employee dictionary.

So when we iterate through employee we get a modified dictionary.

Note: If you want to remove all the elements of the dictionary, use the Clear() method.


Frequently Asked Questions

Another way to create a Dictionary

We can also create a dictionary using var keyword. For example,

using System;
using System.Collections.Generic;

class Program
{
    public static void Main()
    {
// create a dictionary named fruits var fruits = new Dictionary<int, string>() { {1, "Apple"}, {2, "Orange"}, };
// print value having key 2 Console.WriteLine(fruits[2]); } }

Output

Orange
Did you find this article helpful?

Your builder path starts here. Builders don't just know how to code, they create solutions that matter.

Escape tutorial hell and ship real projects.

Try Programiz PRO
  • Real-World Projects
  • On-Demand Learning
  • AI Mentor
  • Builder Community