C# 에서 많이 사용하는 Dictionary에 대해서 이야기하겠습니다.

Dictionary 란 단어의 뜻은 사전이죠. 

사전에는 ㄱ,ㄴ,ㄷ,ㄹ 과 같이 키워드가 있고

해당 키워드를 기준으로 원하는 정보를 찾아요.

 

Dictionary도 이와 비슷합니다.

Dictionary에는 Key와 Value가 있고

이 Key와 Value를 통해서 데이터를 저장하고 찾기도 합니다.


예를 들어 전화번호부를 Dictionary를 이용해서 만든다고 해볼까요?

 

김민수 010-5323-4303

임시양 010-3837-3943

박만덕 010-5839-3482

이렇게 3명의 전화번호가 딕셔너리에 저장되어 있다고 가정하겠습니다.


우선 PhoneNumbers 라는 Dictionary를  선언해주겠습니다.

Key는 string으로 이름이 들어갑니다. Value는 string으로 전화번호가 들어가죠.

[ ] 사이에 Key를 입력하고 해당 Value를 넣어줍니다.

이렇게 하면 우리가 선언한 Dictionary에는 3명의 전화번호가 저장되어있고 이 전화번호는 이름을 통해서 찾을 수 있습니다.

데이터를 추가하는 또 다른 방법으로 Add 함수를 이용할 수 있습니다.


이번에 우리가 입력한 데이터를 핸들링 하는 방법을 알아보겠습니다.

해당 딕셔너리에 우리가 찾고 싶은 Key가 있는지 확인하기 위해서 사용하는 함수는 ContainsKey입니다.

ContainsKey라는 함수를 이용해서 찾고 싶은 Key를 입력하면 Dictionary에서 Key가 존재하는지 확인하고 그 결과를 반환합니다. 만약 찾았다면 true를 찾지 못했다면 false를 반환하겠죠.

이외에도 ContainsValue라는 함수도 있습니다. 사용방법은 ContainsKey와 같고 반환 값도 같습니다. 만약에 ContainsKey를 이용해 Key가 존재하는지 확인했다면 []에 해당 Key를 입력하여 데이터를 가져옵니다. Key로 데이터를 가져올때는 get; set;이므로 데이터를 가져올 수 있고, 위에서 사용한 것처럼 데이터를 설정하는 것도 가능합니다.


두번째로 알아볼 내용은 정렬인데요. Dictionary는 Key나 Value를 기준으로 정렬하는 것이 가능합니다.

전화번호부를 만들때 아무렇게나 입력된 데이터를 정렬하는데 아주 좋은 기능이죠.

OrderBy라는 함수를 이용합니다.

위와 같이 김민수, 임시양, 박만덕이 Key로 저장되어 있을때 가나다 순으로 정렬하면 김민수, 박만덕, 임시양 순서가 되겠죠. 이럴때 OrderBy 함수를 사용하고 item의 Key값으로 정렬을 해줍니다. (만약 Value로 정렬하고 싶다면 Value를 써주면 됩니다.)

이렇게 되면 결과는 다음과 같습니다.

내림차순으로 정렬하고 싶다면 OrderBy 대신에 OrderByDescending를 사용하면 됩니다. 이밖에 GroupBy 함수도 존재해서 특정 조건을 이용해 원하는 Item을 가져올 수 있습니다.


Dictionary는 List나 배열과 같이 인덱스를 이용하여 데이터를 찾을 수 없습니다. 따라서 일반적인 반복문을 이용하는 것은 불가능한데요. 이럴때 사용하는 것이 foreach입니다.

foreach를 이용하면 다음과 같이 사용가능하고요.

Dictionary에 데이터가 정렬된 순서대로 item를 반환합니다.

따라서 Key에는 이름이 저장되고 Value에는 전화번호가 저장되겠죠.

+ Recent posts