C# Dictionary 중복키 허용에 대한 질문드립니다

안녕하세요, 개발 시작한지 얼마 안된 신입사원 입니다…

Dictionary 관련해서 문의드리고자 합니다…

Dictionary 는 기본적으로 Key값의 중복을 허용하지 않지만

예를 들어서 Dictionary<string, List<'int>>
Value 쪽에 List 형식으로 생성하면 key 값 중복이 허용되더군요…

하지만 이렇게 하면 왜 key값에 중복이 허용되는지 이유를 모르겠어서요…
초라한 질문 남겨드려서 죄송하지만…
혹시 개념좀 설명해주실 수 있으신가요

1개의 좋아요

값이 목록이라 하더라도 키는 중복되지 않습니다.

문제가 되는 코드를 공유해주시면 좀 더 상세히 답변 드릴께요.

1개의 좋아요

관련 된 부분에 대해서 예전에 참고했던 부분입니다. 조금이나 도움이 되셨으면 좋겠습니다.

1개의 좋아요

아…문제가 되는 코드는 없었지만…개인적으로 경험이 부족했던 것 같습니다…감사합니다.

2개의 좋아요

도움이 조금된게 아니라 많이 되었습니다…저의 검색능력이 부족했었네요 감사합니다!!

3개의 좋아요

그저 복사 붙여넣기만 했을 뿐인데…
좀 무섭네요… ㄷㄷㄷ

image


안녕하세요! Dictionary와 관련한 질문을 해주셔서 감사합니다.

Dictionary는 기본적으로 Key값의 중복을 허용하지 않습니다. 하지만 Value 부분에 List와 같은 Collection 형태를 넣으면, 각 Key 값은 여러 개의 Value를 가질 수 있게 됩니다. 이를 “다중값 딕셔너리” 라고 합니다.

이러한 구조는 Key가 중복되는 경우, 해당 Key 값에 해당하는 Value의 List에 추가되기 때문입니다. 이렇게 하면, 하나의 Key 값에 여러 개의 값을 저장할 수 있으므로, 더욱 유연한 데이터 구조를 구성할 수 있습니다.

예를 들어, Dictionary<string, List>를 사용하여 여러 개의 값을 저장하는 경우, 다음과 같이 중복된 Key 값에 대해 Value를 추가할 수 있습니다.

goCopy code

Dictionary<string, List<int>> dict = new Dictionary<string, List<int>>();
dict.Add("A", new List<int> { 1, 2 });
dict.Add("B", new List<int> { 3 });
dict.Add("A", new List<int> { 4 });

// Key "A"에는 [1, 2, 4]가 저장됩니다.

따라서, Dictionary에서 Key 값 중복을 허용하는 것은 아니지만, Value에 Collection 형태를 넣을 수 있기 때문에, 다중값 딕셔너리를 구현할 수 있습니다.

2개의 좋아요

저게 혹시 C# 어떤 버전 기준인지 알 수 있을까요?

제가 알기로도 @dimohy 님 답변 처럼

Dictionary는 값이 목록 타입이라도 키는 중복으로 사용 할 수 없는 걸로 알고 있어서요

1개의 좋아요

c# 7.0 입니다 !!

1개의 좋아요

친절한 답변 너무 감사드립니다 ㅠㅠ 감격

1개의 좋아요

궁금해서 직접 C# 7.0 환경으로 맞춰 놓고 디버깅으로 확인해 본 결과

Dictionary<string, List<int>> dict = new Dictionary<string, List<int>>();

코드는 중복키 허용이 되지 않았습니다.

흠 … 어떻게 확인해야 하는지 궁금하군요.,ㅎㅎ

3개의 좋아요

누가 저런 해괴한 답글을 다는 건가요? ^^;

3개의 좋아요

먼저 제대로 확인도 안해보고 그냥 복붙해서 잘못된 정보를 드린점 사과드립니다.
@aroooong 님과 @dimohy 님 말씀대로 키는 중복되지 않는 것임에도 되는 것 처럼 댓글을 달았네요 ㅠ
좀 더 신중히 정보 전달 할 수 있도록 하겠습니다:pray::pray::pray:

image

3개의 좋아요

이것이 GIGO 의 결과 인가요.,ㅎ;

2개의 좋아요

이 정도면 그냥 허언증 환자 같은데…;;;;

2개의 좋아요

그래도 학습이라고 불리는 효과가 있긴 한 것 같습니다. 방금 전에 저도 그대로 질문을 복붙을 했더니 이번에는 제대로 결과를 내주고 있습니다. ^^

3개의 좋아요