1. 배열, 리스트를 딕셔너리로 변환
배열과 리스트를 딕셔너리로 변환하는 목적
--> 딕셔너리로 변환하면 키를 지정해서 해당 값에 빠르게 접근할 수 있다!
LINQ에 있는 ToDictionary 메서드를 사용하면 배열이나 리스트를 딕셔너리로 변환할 수 있다.
List<Monster>를 Dictionary<int, Monster>로 변환하는 예
var monsters= new List<Monster>();
...
//객체의 멤버를 ToDictionary의 첫 번째 인수에 대입
var monstersDict = monsters.ToDictionary(mon => mon.Code);
이 코드에서는 ToDictionary 메서드의 첫 번째 인수에 식별 코드(Monster.Code)를 나타내는 람다식을 넘겨준다.
이렇게 하면 식별 코드를 '키(key)'로 이용하고 Monster 객체를 '값(value)'으로 이용해서 딕셔너리를 생성할 수 있다.
Monster 객체가 자동으로 값이 된다.
LINQ를 사용해서 구한 객체를 ToDictionary를 통해 딕셔너리로 변환하면 키를 지정해서 빠르게 접근할 수 있다.
2. 딕셔너리로부터 다른 딕셔너리를 생성
리스트를 딕셔너리로 변환하는 방법과 달리 두 번째 인수에 어떤 객체를 값으로 이용할지를 지정한다.
아래는 딕셔너리에서 조건에 일치하는 요소만 빼내서(Where 메서드를 이용) 새로운 딕셔너리를 생성하는 코드이다.
var itemDict = new Dictionary<string, int>() {
{"sword", 500},
{"spear", 600},
{"bow", 700},
{"shield", 800},
};
var newDict = itemDict.Where(x => x.Value >= 600).ToDictionary(item => item.Key, item => item.Value);
foreach (var item in newDict.Keys)
{
Console.WriteLine(item);
}
'C# > Dictionary' 카테고리의 다른 글
딕셔너리의 키가 중복되는 것을 허용하는 방법 (값에 리스트를 저장하는 방법) (0) | 2021.08.24 |
---|---|
사용자가 정의한 클래스를 키로 사용하는 딕셔너리 (0) | 2021.08.23 |
딕셔너리의 LINQ와 foreach 활용 (0) | 2021.08.22 |
딕셔너리 요수 추가, 추출, 삭제 (0) | 2021.08.17 |