본문 바로가기

C#/Dictionary

딕셔너리의 키가 중복되는 것을 허용하는 방법 (값에 리스트를 저장하는 방법)

딕셔너리는 키가 중복되는 것을 허용하지 않는다.

 

따라서 동일한 키에 여러 객체를 관련지을 수 없다.

 

동일한 줄임말에 여러 용어를 대응시키려고 해도 Dictionary<string, string>에는 대응시킬 수 없다.

 

키에 중복을 허용하여 여러 용어를 대응 시키려면 값의 형을 string이 아니라 List<string>으로 지정해야 한다.

이렇게 하면 하나의 키에 여러 용어를 저장할 수 있게 된다.

 

//딕셔너리 초기화
var dict = new Dictionary<string, List<string>>()
{
    {"A.I", new List<string> {"Artificial Intelligence", "Avian Influenza", }},
    {"DPS", new List<string> {"Damage Per Second", "Distance Per Stroke", }},
};

//딕셔너리에 추가
var key = "DPS";
var value = "Dividends Per Share";

if (dict.ContainKey(key))
{
    //"DPS"가 이미 등록되어 있다면 여기에 "Dividends Per Share"를 추가한다.
    //여기서 Add는 딕셔너리가 아니라 리스트의 메서드이다.
    //값인 리스트에 추가되는 것이다.
    dict[key].Add(value);
}
else
{
    //"DPS"가 등록되어 있지않다면 "Dividends Per Share"가 저장된 리스트 객체를 등록한다.
    dict[key] = new List<string> { value };
}