728x90
✅ 파이썬에서 해시(Hash)는 Dictionary 를 통해 구현 가능함
✅ 언제 사용?
1) 키-값으로 저장할때 (숫자 아닌값으로 저장-찾을때)
2) 빠른 접근-탐색 시 O(1)
3) 집계 필요 시 -> from collections import Counter
✅ Dictionary 사용법
#dict.fromkeys([arr],value)
arr원소를 key로하고 value를 가진 딕셔너리가 생성됨
keys = ['a', 'b', 'c']
value = 0
d = dict.fromkeys(keys, value)
print(d) # 출력: {'a': 0, 'b': 0, 'c': 0}
# 빈딕셔너리 생성
dict1 = {} # {}
dict2 = dict() # {}
# 특정 key-value쌍을 가진 dictionary 선언
student1 = { 'name': '나영' , 'age': 28}
# dictionary를 value로 가지는 dictionary 선언
class =
{ 'student1 = { 'name': '나영' , 'age': 28},
'student2': {'name': '아영','age': 28 }}
# [] 기호 사용해 원소 가져오기
student1['name'] # 나영
# get 메소드를 아용해 원소 가져오기 1
# 딕셔너리에 해당 key가 없을때 Key Error 를 내는 대신, 지정한 값을 가져온다.
student1.get('height', 0) # 0
student1.get('name', 0) # 나영
# 값 집어넣기
student1['age'] = 120
# 값 수정
student1['age'] += 120
# del 이용하기 - 키가 있는 경우
dict = {'김철수': 300, 'Anna': 180}
del dict['김철수']
# pop 이용하기 - 키가 있는 경우 대응하는 value 리턴
my_dict = {'김철수': 300, 'Anna': 180}
my_dict.pop('김철수', 180) # 300
✅ Counter 사용법
from collections import Counter
>>> Counter(["hi", "hey", "hi", "hi", "hello", "hey"])
Counter({'hi': 3, 'hey': 2, 'hello': 1})
>>> Counter("hello world")
Counter({'h': 1, 'e': 1, 'l': 3, 'o': 2, ' ': 1, 'w': 1, 'r': 1, 'd': 1})
>>> counter = Counter("hello world")
>>> counter["o"], counter["l"]
(2, 3)
>>> counter["l"] += 1
>>> counter["h"] -= 1
>>> counter
Counter({'h': 0, 'e': 1, 'l': 4, 'o': 2, ' ': 1, 'w': 1, 'r': 1, 'd': 1})
>>> if "o" in counter:
>>> print("o in counter")
>>> del counter["o"]
>>> if "o" not in counter:
>>> print("o not in counter")
# most_common() 가장 많은 순 정렬
>>> Counter('hello world').most_common()
[('l', 3), ('o', 2), ('h', 1), ('e', 1), (' ', 1), ('w', 1), ('r', 1), ('d', 1)]
# most_common(K)가장 많은 순 정렬중 K만큼 반환
>>> Counter('hello world').most_common(1)
[('l', 3)]
counter1 = Counter(["A", "A", "B"])
counter2 = Counter(["A", "B", "B"])
#이 두 객체를 더할 수도 있음
>>> counter1 + counter2
Counter({'A': 3, 'B': 3})
#이 두 객체를 뺄 수도 있습니다.
>>> counter1 - counter2
Counter({'A': 1})
728x90
'코딩테스트 > 자료구조(스택,큐,해시,힙)' 카테고리의 다른 글
[스택] (프로그래머스_176962) 과제 진행하기 (☆☆☆) (0) | 2024.10.01 |
---|---|
[큐] (프로그래머스_42583) 다리를 지나는 트럭 - 파이썬 (0) | 2024.09.05 |
[큐/힙] (프로그래머스_42587) 프로세스 - 파이썬 (0) | 2024.09.05 |
[스택] (프로그래머스_42586) 기능개발 - 파이썬 (0) | 2024.09.05 |
[해시] (프로그래머스_42577) 전화번호 목록 - 파이썬 (0) | 2024.09.05 |