Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#에서 딕셔너리(Dictionary)를 키와 값 기준으로 정렬하는 방법

C#에서 Dictionary(딕셔너리)는 키(Key)와 값(Value)의 쌍으로 데이터를 저장하는 대표적인 컬렉션입니다. 이번 글에서는 딕셔너리의 키를 기준으로 정렬하여 출력하는 방법을 예제와 함께 살펴보겠습니다.

1. 딕셔너리 생성 및 데이터 추가

먼저 키와 값을 가지는 딕셔너리를 선언하고 데이터를 추가합니다.

var d = new Dictionary<string, int>();
d.Add("Zack", 0);
d.Add("Akon", 3);
d.Add("Jack", 2);
d.Add("Tom", 1);

2. 키 목록을 가져온 후 정렬하기

딕셔너리 자체는 기본적으로 삽입 순서를 보장하지 않기 때문에, 키 목록을 리스트로 변환한 뒤 Sort() 메서드로 정렬해야 합니다.

var val = d.Keys.ToList();
val.Sort();

3. 전체 예제 코드

아래 코드는 딕셔너리의 키를 알파벳순으로 정렬한 뒤, 각 키에 해당하는 값과 함께 출력하는 전체 예제입니다.

using System;
using System.Collections.Generic;
using System.Linq;

class Demo {
    static void Main() {
        // 키와 값으로 딕셔너리 구성
        var d = new Dictionary<string, int>();
        d.Add("Zack", 0);
        d.Add("Akon", 3);
        d.Add("Jack", 2);
        d.Add("Tom", 1);

        // 키를 가져와서 정렬
        var val = d.Keys.ToList();
        val.Sort();

        // 정렬된 키를 순회하며 출력
        foreach (var key in val) {
            Console.WriteLine("{0}: {1}", key, d[key]);
        }
    }
}

실행 결과

Akon: 3
Jack: 2
Tom: 1
Zack: 0

참고: LINQ를 활용한 값 기준 정렬

키가 아닌 값(Value)을 기준으로 정렬하고 싶다면 LINQ의 OrderBy() 메서드를 사용하는 것이 더 간결합니다.

var sorted = d.OrderBy(x => x.Value);
foreach (var item in sorted) {
    Console.WriteLine("{0}: {1}", item.Key, item.Value);
}

이 방법을 사용하면 별도의 리스트 변환 없이 한 줄로 정렬된 결과를 얻을 수 있으며, 내림차순 정렬이 필요할 경우 OrderByDescending()을 사용하면 됩니다.