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()을 사용하면 됩니다.