목차
728x90
반응형
SMALL
Hash : Dictionary
Associative memories" or "associative arrays
A set of Key:value pairs
순서없는 집합
키 중복 X
동일 키에 대해서는 값이 갱신됨
# dictionary 자료구조 이용 방법
scores = {"Tom": 90, "David": 85, "Gabi": 80}
# items()
items = scores.items()
print(items)
itemsList = list(items)
print(itemsList)
# for loop
for i in itmes:
print(i)
# -> 키 값 출력
# keys()
keys = score.keys()
for k in keys:
print(k)
# values()
values = scores.values()
for v in values:
print(v)
생성 : {} or dict()
파이썬에서 딕셔너리 구현 방법
Collections - Counter
import collections
s = ['a', 'b', 'c', 'b', 'a', 'b', 'c']
c = collections.Counter(s)
print(c)
"""
Counter(('b': 3, 'a': 2, 'c': 2))
"""
import re
from collections import Counter
words = re.findall(r'\w+', open('ive.txt', encoding='utf8').read())
print(Counter(words).most_common(20))
"""
[('s',19), ('LIKE', 18), ('What', 11), ('after', 11), ('I', 10) , ...]
"""
이진 검색
from bisect import bisect
def grade(score, breakpoints=[60, 70, 80, 90], grades='FDCBA') :
i = bisect(breakpoints, score)
return grades[i]
print([grade(score) for score in [33, 99, 77, 70, 89, 90, 100]])
"""
['F', 'A', 'C', 'C', 'B', 'A', 'A']
"""
bisect() : 인덱스 리턴
bisect_left()
bisect_right()
Heap
: from heapq import heappush, heappop
heapq : 우선순위큐
min : heap[0]
heapq.heappush(heap, Item)
heapq.heappop(heap)
heapq.heapify(x) : list x를 선형시간에 힙 변환
from heapq import heappush
nums = [4, 1, 7, 3, 8, 5]
heap = nums[:]
heapify(heap)
print(nums)
print(heap)
"""
"""
heappush(heap, 4)
heappush(heap, 1)
heappush(heap, 7)
heappush(heap, 3)
print(heap)
print(heappop(heap))
print(heap)
"""
"""
최대 힙 만들기
힙에 원소를 추가할때 (-item, item)의 튜플 형태로 넣어주면,
=> 튜플의 첫번째 원소를 우선순위로 힙 구성
=> heappop하면 최댓값 반환
* 실제 원소 값은 튜플의 두번째 자리에 저장되어 있으므로 [1] 인덱싱 사용
ex) max_item = heapq.heappop(max_heap)[1]
728x90
반응형
LIST