파이썬 중급 5일차(1)

김영목·2021년 8월 5일
0

파이썬중급

목록 보기
9/18

1교시 : 해쉬테이블


a = ((수학_초급, 100000),
     (수학_중급, 120000),
     (영어_중급, 120000),
     (영어_초급, 120000))
     
위와 같은 튜플 안 튜플 자료구조가 있다. 여기서 만약 우리가 수학_초급의 수강료가 얼마인지 알고 싶다면 어떻게 해야할까???

이때 사용가능한 방법은 a[0][1]로 찾는 것이다. 하지만 이것은 해당 데이터의 인덱스 번호를 정확히 아는 경우 사용가능하고 그렇지 않을 경우 일일이 선형으로 해당 과목의 인덱스를 찾아야 하는 단점이 존재한다. 

그래서 이러한 튜플을 해쉬테이블(키와 벨류)로 바꿔주는 것이 데이터 관리에 효율적이다. 

그래서 한번 실제 # Dict Setdefault 예제를 가지고 튜플을 dic으로 바꿔보자.

a = ((a,100), (b, 200), (c, 300), (d, 400))라고 하자.

만약 우리가 어떤 builtin함수를 사용하지 않고 튜플을 dic타입으로 바꾸고자 한다면 어떻게 해야할까??
my_dict1 = {}
for x, y in a :
	if x in my_dict1 :
    		my_dict1[x].append(y)
     	else :
        	my_dict1[x] = [y]
            
위의 반복문을 이용한 방법 말고 setdefault를 이용하면 쉽게 튜플을 dic으로 변경할 수 있다. 

my_dict2 = {}
for x, y in a :
	my_dict2.setdefault(x,[]).append(y)
    
이렇게 해서 생성된 결과에서 우리가 만약 a의 값이 한 종류가 아닌 두 종류일 경우 어떻게 해야할까??

이경우 손쉽게 수정이 가능하다. 

 my_dict1[a] += [200] 이러한 방식으로 수정하면 된다., 여기서 주의할 점은 수정 시 my_dict1[a] = [200] 이렇게 +를 빼먹으면 해당 키의 벨류가 수정된다. (추가가 아닌)
 
    
profile
안녕하세요 김영목입니다.

0개의 댓글