Table of Contents
해시맵의 주요 개념과 특징
해시맵(HashMap)은 데이터를 키-값 쌍(Key-Value Pair)으로 저장하고 빠르게 검색할 수 있도록 도와주는 자료 구조입니다. 해시맵은 해시 함수를 사용하여 데이터를 저장하고 검색합니다.
다음은 해시맵의 주요 개념과 특징입니다:
- 키-값 쌍: 해시맵은 데이터를 키와 값의 쌍으로 저장합니다. 예를 들어, 이름을 키로 하고 전화번호를 값으로 저장할 수 있습니다.
- 해시 함수: 키를 해시 함수에 입력하여 해시 값을 생성합니다. 이 해시 값은 해시맵에서 해당 키-값 쌍이 저장될 위치를 결정합니다.
- 빠른 검색: 해시맵은 키를 통해 값을 빠르게 검색할 수 있습니다. 이는 해시 함수 덕분에 거의 일정한 시간 안에 검색이 가능하기 때문입니다.
- 충돌 처리: 두 개 이상의 키가 동일한 해시 값을 가질 때, 이를 "충돌"이라고 합니다. 해시맵은 이러한 충돌을 처리하기 위해 여러 가지 방법(체이닝, 오픈 어드레싱 등)을 사용합니다.
예를 들어, 간단한 해시맵을 다음과 같이 사용할 수 있습니다:
# 파이썬의 딕셔너리(dict)는 해시맵의 일종입니다.
hash_map = {}
# 데이터 삽입
hash_map["name"] = "Alice"
hash_map["age"] = 25
# 데이터 검색
print(hash_map["name"]) # 출력: Alice
print(hash_map["age"]) # 출력: 25
# 데이터 삭제
del hash_map["age"]
위의 예제에서 "name"과 "age"는 키이고, "Alice"와 25는 각각의 값입니다. 해시맵을 사용하면 특정 키에 대한 값을 매우 빠르게 검색할 수 있습니다.
해시맵은 주로 다음과 같은 상황에서 유용합니다:
- 빠른 데이터 검색: 특정 키로 값을 빠르게 찾을 수 있습니다.
- 중복 키 방지: 동일한 키가 여러 번 저장되지 않도록 합니다.
- 동적 데이터 관리: 새로운 키-값 쌍을 쉽게 추가하거나 기존 쌍을 삭제할 수 있습니다.
해시맵은 파이썬의 딕셔너리(dict), 자바의 해시맵(HashMap) 등 다양한 프로그래밍 언어에서 기본 자료구조로 제공되며, 효율적인 데이터 관리에 널리 사용됩니다.
해시맵에 여러 값을 저장하는 방법
해시맵(HashMap)은 기본적으로 각 키에 대해 하나의 값만을 저장할 수 있습니다. 즉, 동일한 키에 대해 여러 값을 저장할 수는 없습니다. 새로운 값을 동일한 키로 저장하면 이전 값은 덮어쓰여집니다.
그러나, 하나의 키에 여러 값을 저장해야 하는 경우도 있습니다. 이를 해결하는 방법 중 하나는 해시맵의 값으로 리스트(List) 또는 집합(Set)과 같은 컬렉션을 사용하는 것입니다. 이렇게 하면 각 키에 대해 여러 값을 저장할 수 있습니다.
예제: 해시맵에 리스트를 값으로 사용
다음은 키에 여러 값을 저장하는 방법을 보여주는 예제입니다:
from collections import defaultdict
# defaultdict를 사용하면 기본값을 리스트로 설정할 수 있습니다.
hash_map = defaultdict(list)
# 데이터 삽입
hash_map["fruits"].append("apple")
hash_map["fruits"].append("banana")
hash_map["vegetables"].append("carrot")
# 데이터 출력
print(hash_map["fruits"]) # 출력: ['apple', 'banana']
print(hash_map["vegetables"]) # 출력: ['carrot']
# 새로운 값을 추가
hash_map["fruits"].append("orange")
print(hash_map["fruits"]) # 출력: ['apple', 'banana', 'orange']이 예제에서는 defaultdict를 사용하여 값으로 리스트를 사용하는 해시맵을 만듭니다. 이렇게 하면 키가 존재하지 않을 경우 자동으로 빈 리스트를 생성할 수 있습니다.
예제: 해시맵에 집합을 값으로 사용
집합을 사용하여 중복된 값을 저장하지 않도록 할 수도 있습니다:
from collections import defaultdict
# defaultdict를 사용하면 기본값을 집합으로 설정할 수 있습니다.
hash_map = defaultdict(set)
# 데이터 삽입
hash_map["fruits"].add("apple")
hash_map["fruits"].add("banana")
hash_map["vegetables"].add("carrot")
# 중복 값 추가 시도
hash_map["fruits"].add("apple")
# 데이터 출력
print(hash_map["fruits"]) # 출력: {'apple', 'banana'}
print(hash_map["vegetables"]) # 출력: {'carrot'}이 예제에서는 defaultdict를 사용하여 값으로 집합을 사용하는 해시맵을 만듭니다. 집합은 중복된 값을 허용하지 않으므로, "apple"을 두 번 추가해도 한 번만 저장됩니다.
이와 같이 해시맵의 값을 리스트나 집합 등으로 설정하면 하나의 키에 여러 값을 저장할 수 있습니다. 이를 통해 데이터의 유연한 관리를 할 수 있습니다.
'코딩테스트' 카테고리의 다른 글
[파이썬] 해시 > 전화번호 목록 (0) | 2024.05.27 |
---|---|
[파이썬] 해시 > 폰켓몬 (0) | 2024.05.26 |
[파이썬] TwoSum 해시로 풀기 (0) | 2024.05.25 |
[파이썬] 스택/큐 > 주식가격 (0) | 2024.05.23 |
[파이썬] 스택/큐 > 기능개발 (0) | 2024.05.23 |
- Total
- Today
- Yesterday
- LIST
- #패스트캠퍼스 #UpstageAILab #Upstage #부트캠프 #AI #데이터분석 #데이터사이언스 #무료교육 #국비지원 #국비지원취업 #데이터분석취업 등
- speaking
- LLM
- Python
- Github
- 오블완
- Hugging Face
- clustering
- PEFT
- RAG
- nlp
- English
- 파이썬
- #패스트캠퍼스 #패스트캠퍼스ai부트캠프 #업스테이지패스트캠퍼스 #upstageailab#국비지원 #패스트캠퍼스업스테이지에이아이랩#패스트캠퍼스업스테이지부트캠프
- 손실함수
- 코딩테스트
- 리스트
- recursion #재귀 #자료구조 # 알고리즘
- 티스토리챌린지
- Numpy
- 해시
- Transformer
- cnn
- t5
- Array
- Lora
- #패스트캠퍼스 #패스트캠퍼스AI부트캠프 #업스테이지패스트캠퍼스 #UpstageAILab#국비지원 #패스트캠퍼스업스테이지에이아이랩#패스트캠퍼스업스테이지부트캠프
- classification
- git
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |