C#에서 Dictionary를 List로 변환해야 하거나 List를 Dictionary로 변환해야 하는 경우가 있습니다.
어떻게 변환하는지 하나씩 살펴보도록 하겠습니다.
Dictionary를 List로 변환
먼저 Dictionary를 List로 변환하는 방법을 살펴보도록 하겠습니다.
Dictionary는 키(Key)와 값(Value)로 구성되어 있습니다.
Dictionary를 리스트로 변환하려면 Dictionary의 키를 담을 List와 Dictionary의 값을 담을 List가 필요합니다.
Dictionary를 List로 변환 예제
using System.Collections.Generic;
namespace Sample
{
class Sample
{
static void Main()
{
var myTable = new Dictionary<string, string>();
myTable.Add("Korea", "Seoul";);
myTable.Add("Japan", "Tokyo";);
myTable.Add("America", "Washington";);
var kList = new List<string>(myTable.Keys);
var vList = new List<string>(myTable.Values);
Console.WriteLine("[{0}]", string.Join(", ", kList));
Console.WriteLine("[{0}]", string.Join(", ", vList));
Console.ReadKey();
}
}
}
결과
[Korea, Japan, America]
[Seoul, Tokyo, Washington]
리스트 변수인 kList에는 키만 저장하였고, vList 리스트 변수에는 값만 저장하였습니다.
List를 Dictionary로 변환
이번에는 List에서 Dictionary로 변환하는 방법을 보겠습니다.
Dictionary로 변환하기 위해서는 2개의 리스트가 필요합니다.
바로 예제를 보도록 하겠습니다.
using System;
using System.Collections.Generic;
using System.Linq;
namespace Sample
{
class Sample
{
static void Main()
{
var kList = new List<string>();
kList.Add("Korea";);
kList.Add("Japan";);
kList.Add("America";);
var vList = new List<string>();
vList.Add("Seoul";);
vList.Add("Tokyo";);
vList.Add("Washington";);
Dictionary<string, string> myTable =
kList.Zip(vList, (k, v) => new { k, v }).ToDictionary(a => a.k, a => a.v);
foreach(KeyValuePair<string, string> item in myTable) {
Console.WriteLine("[{0}:{1}]", item.Key, item.Value);
}
Console.ReadKey();
}
}
}
결과
[Korea:Seoul]
[Japan:Tokyo]
[America:Washington]
2개의 리스트를 LINQ의 Zip 메서드를 사용하여 Dictionary 타입으로 변환했습니다.
Dictionary는 키와 값으로 구성되어 있기 때문에 2개의 리스트가 필요합니다.
또한 2개의 리스트 요소 개수는 동일해야 합니다.
정리
Dictionary를 List로, List를 Dictionary로 변환하는 방법에 대해 알아봤습니다.
개인적으로는 List를 Dictionary로 변환하는 경우는 많지 않지만 Dictionary를 List로 변환하는 경우가 종종 있습니다.
키만 필요하던지, 또는 값만 필요한 경우만도 있기 때문에 가끔씩 변환 작업을 하기도 합니다.
필요한 처리에 맞게 변환을 할 수 있기 때문에 알아두면 유용하게 사용하실 수 있습니다.
댓글