C#

[C#]Dictionary 콘솔에 출력하는 방법

DevStory 2022. 8. 29.

Dictionary 콘솔에 출력하는 방법

C#의 Dictionary 클래스는 <Key, Value> 형식의 컬렉션이므로 키와 값을 한 번에 출력할 수 없습니다.

 

이번 포스팅은 Dictionary의 키와 값을 콘솔에 출력하는 몇 가지 방법을 소개합니다.


방법 1. for문

for문을 사용하여 Dictionary의 키와 값을 콘솔에 출력할 수 있습니다.

 

[출력 방법]

순서 1. Dictionary 요소의 개수만큼 반복문을 실행합니다.

순서 2. Dictionary 클래스의 ElementAt() 메서드로 Dictionary의 요소를 가져옵니다.

순서 3. 콘솔에 키와 값을 출력합니다.

 

다음 예제는 string 타입의 키와 int 타입의 값으로 구성된 Dictioanry의 요소를 출력합니다.

class Program
{
  public static void PrintDict<K, V>(Dictionary<K, V> dict)
  {
    for (int i = 0; i < dict.Count; i++)
    {
      KeyValuePair<K, V> entry = dict.ElementAt(i);
      Console.WriteLine("Key: " + entry.Key + ", Value: " + entry.Value);
    }
  }
  
  static void Main(string[] args)
  {
    Dictionary<string, int> dict = new Dictionary<string, int>();
    dict.Add("둘리", 10);
    dict.Add("또치", 20);
    dict.Add("마이콜", 30);

    PrintDict(dict);
  }
}

[실행 결과]

Key: 둘리, Value: 10
Key: 또치, Value: 20
Key: 마이콜, Value: 30

for문이 나쁜 방법은 아니지만, 다음 방법으로 소개하는 foreach문을 사용하면 코드를 더 간략하게 작성할 수 있습니다.


방법 2. foreach문(권장하는 방법)

C#의 foreach문을 사용하면, ElementAt() 메서드를 사용하지 않고 Dictionary의 각 요소를 가져올 수 있습니다.

 

다음 예제는 string 타입의 키와 int 타입의 값으로 구성된 Dictioanry의 요소를 출력합니다.

class Program
{
  public static void PrintDict<K, V>(Dictionary<K, V> dict)
  {
    foreach (KeyValuePair<K, V> entry in dict)
    {
      Console.WriteLine("Key: " + entry.Key + ", Value: " + entry.Value);
    }
  }
  
  static void Main(string[] args)
  {
    Dictionary<string, int> dict = new Dictionary<string, int>();
    dict.Add("둘리", 10);
    dict.Add("또치", 20);
    dict.Add("마이콜", 30);

    PrintDict(dict);
  }
}

[실행 결과]

Key: 둘리, Value: 10
Key: 또치, Value: 20
Key: 마이콜, Value: 30

인덱스가 필요하다면 for문을 사용하는 방법이 좋으며, 인덱스가 필요 없다면 foreach문을 사용하는 방법이 좋습니다.


방법 3. LINQ의 Select 메서드

마지막 방법으로 LINQ의 Select() 메서드를 사용하여 Dictionary의 요소를 콘솔에 출력할 수 있습니다.

 

먼저, LINQ의 Select() 메서드를 사용하기 위해 다음 네임스페이스를 추가합니다.

using System.Linq;

Select() 메서드는 배열 또는 컬렉션과 같은 데이터 집합에서 데이터를 원하는 형식으로 가져오는 용도로 사용됩니다.

 

[출력 방법]

순서 1. Dictionary에서 Select() 메서드를 호출하여 키와 값을 출력하기 위한 포맷 형식을 설정하는 람다 표현식 또는 대리자를 전달합니다.

순서 2. Select() 메서드 반환 결과를 익명 타입의 변수에 할당합니다.

순서 3. string 클래스에서 제공하는 Join() 메서드의 첫 번째 매개변수에 구분자를 전달하고 두 번째 매개변수에 익명 타입의 변수를 전달하여 Dictionary의 요소를 출력합니다.

 

다음 예제는 string 타입의 키와 int 타입의 값으로 구성된 Dictioanry의 요소를 LINQ의 Select() 메서드를 사용하여 출력합니다.

class Program
{
  public static void PrintDict<K, V>(Dictionary<K, V> dict)
  {
    var values = dict.Select(pair => $"{pair.Key} => {pair.Value}");
    Console.WriteLine(string.Join(Environment.NewLine, values));
  }
  
  static void Main(string[] args)
  {
    Dictionary<string, int> dict = new Dictionary<string, int>();
    dict.Add("둘리", 10);
    dict.Add("또치", 20);
    dict.Add("마이콜", 30);

    PrintDict(dict);
  }
}

[실행 결과]

둘리 => 10
또치 => 20
마이콜 => 30

LINQ에서 제공하는 Select() 메서드에 대한 세부적인 내용은 아래 포스팅에서 확인할 수 있습니다.

 

[C#]LINQ Select절

Select문 LINQ의 Select문은 SQL의 Select문과 동일합니다. Select문은 데이터의 모든 항목을 추출할 것인지 특정 항목만 추출할 것인지 설정할 수 있는 문법입니다. Select문은 질의 구문(Query Syntax), 메서

developer-talk.tistory.com

반응형

댓글