Python 입문 | 리스트, 튜플, 레인지, 세트, 사전 | 키 값을 관리하는 사전


목록도 튜플도 인덱스라는 번호를 사용하여 값을 관리한다는 점에서는 같았다. 이 숫자가 아닌 “이름"을 사용하여 값을 관리하는 것도 Python에는 제공이 되어 있다. 그것은 “사전(dictionary)“이 라는 것이다.   사전은 ‘키워드’라는 이름을 붙여 값을 관리한다. 그리고 값을 제거하거나 변경하는 경우에는 그 값의 키를 지정한다. 사전은 다음과 같은 형태로 만든다.

변수 = {키1:값1, 키2:값2, ...}

또는 dict라는 것을 사용하여 만들 수 있다. 다만, 이 경우는 작성 방식이 조금 다르기 때문에 주의해야 한다.

변수 = dict (키1=값1, 키2=값2, ...)

사전에서 값을 꺼내는 경우는 시퀀스와 마찬가지로 []를 사용한다. 다만, 인덱스가 아닌 키워드를 []로 지정한다.

변수 = 사전[키]
사전[키] = 값

사전을 이용했을 때, 초보자가 착각하기 쉬운 것은 “사전은 키를 사용해도 다른 것과 동일하게 값을 꺼낼 수 있다"라는 생각이다. 즉, 키로도 꺼낼수 있고, 번호로도 꺼낼 수 있다라고 생각할 수 있다. 하지만 사전은 “키"밖에 사용할 수 없다. 다시 말하면, 사전에 있는 값을 번호 순서대로 추출 할 수 없다.  

for in 주의!

모든 요소를 처리하기 위한 “for ~ in"구문은 사전에서도 사용할 수 있지만, 그 동작이 미묘하게 다르므로 주의가 필요하다.

리스트나 튜플에서 “for 변수 in 목록"이라고 하면, 리스트의 값이 변수로 꺼낸진다. 하지만 사전의 경우 꺼내지는 것은 각각의 “값"이 아니고 “키"이다. 즉, 변수에 추출된 키를 사용하여 값을 꺼내 사용하는 형태가 되는 거다.     그럼, 아래에 간단한 사용 예를 보도록 하자.

dic = {'taro':'taro@yamada.com', 
       'hanako':'hanako@flower', 
       'ichiro':'ichiro@baseball'} 
for n in dic: 
    print(n + ' (' + dic[n] + ')') 

여기에서는 각각의 이름을 키로하여 이메일 주소를 설정하고 있다. for를 사용하여 사전의 모든 데이터를 표시하고 있다. 사전을 사용하면, 이 처럼 작은 데이터베이스와 같은 사용이 가능해 진다.

사전 조작

사전도 다른 컨테이너와 같은 방법으로 조작 할 수 있는 기능이 여러가지가 제공되어 있다. 주요한 것에 대해 정리하겠다.

· 값 추가

사전[키] = 값

사전에 새로운 값을 추가하는 것은 간단한다. []으로 추가할 키워드를 지정하고 값을 대입하면 된다. 사전에서 해당 키워드가 아직 사용되지 않고 있다면, 새로운 키워드 항목이 추가된다. append와 add와 같은 기능의 함수가 필요없다.    

값 삭제

del 사전[키]

값을 삭제하려면, remove는 사용할 수 없다. del을 사용하여 삭제한다.  

모든 키 얻기

변수 = 사전.keys()

모든 값 얻기

변수 = 사전.values()

모든 항목(키, 값) 얻기

변수 = 사전.items ()

사전에 키워드와 값을 함께 얻는 기능이 있다. keys/values는 사전에 저장되어 있는 모든 키워드/값을 컨테이너로 모와서 꺼낸다. 또한, items는 키워드와 값을 튜플에 정리한 것을 얻는 거다.

정리

사전는 목록 등에 비해 ‘키워드 값을 꺼내기’라는 특성상 다소 특수한 용도로 사용된다. 데이터의 순서가 중요하지 않는 경우라면, 데이터 이름을 붙여 관리하는 것이 번호로 관리하는 것보다 압도적으로 편리하다. 프로그램 작성에 있어서 경우에 따라 “리스트로 하는 것이 좋을지, 사전을 사용하는 편이 편리할지"를 생각해서 이용하도록 하자.