import heapq as hq
min_heap=[]
hq.headpush(min_heap,456)
#heapq.headpush(array(list),element)
Min_heap이 아니라, Max_heap을 이용하고 싶어요!
음수는 커질수록 절대값이 작다. (-1>-2)
양수는 커질수록 절대값이 크다. (2>3)
Tuple은 Sorting 할때, 첫번째 index를 이용해서 우선순위를 매긴다.
import heapq
arr=[-1,5,2,3,9,1]
max_heap=[]
for num in arr:
heapq.heappush(max_heap,(-num,num))
while max_heap:
print(heapq.heappop(max_heap)[1])
# 출력 : 9,5,3,2,1,-1
# 음수는 값이 클수록, 작은 수 니까
#-9 -> -5 -> -3 -> -1 -> 1 순으로 될거고 , 해당 튜플의 값을 보면 Maxheap으로 활용할 수 있음.
map
Key - value 구조로 되어있다.
key : 중복이 불가능, immutable한 객체
Key를 알면, value를 알 수 있으나, value를 안다고 key를 아는건 아니다.
Python에서는 dictionary를 이용한다.
Python에서는 Hashmap형태로 구현 되어있다.
삽입/삭제 : O(1)
dict={'key':1}
# 값 추가 하는 방법
# dict[key] = value로 딕셔너리에 추가 가능합니다.
#key에는 List,set이 들어오지 못합니다. (immutable한 객체가 와야함)
dict[111]=10
dict[(1,1)]="this is Tuple key!"
dict[12]=(3,"3")
#키 검사
if 3 in dict:
print("키가 3인 값이 있습니다")
#값 검사
if "3" in dict.values():
print('값이 "3"인 map이 있습니다')
#키 값들의 모임
# dict.keys()
for key in dict.keys():
print(f"key:{key}")
#값들의 모임
#dict.values()
for value in dict.values():
print(f"values:{value}")
#키-값 pair을 받아오기
# dict.items()
for k,v in dict.items():
print(f"key:{f}")
print(f"value:{v}")
#키 값으로, 값 받기
#dict.get('key')
dict.get(111)
dict[111]
# dict[]방법은, 해당 key가 없으면 error을 반환하기 때문에,비어있을때, NOne을 반환하는 get을 이용하는 것도 좋은방법.
#키 값으로, 해당 딕셔너리 삭제하기
#del['key']
del[(1,1)]