2011년 2월 21일 월요일

[Python] Dictionary 기본

파이썬(Python)의 기본 자료형인 사전(Dictionary)형의 기본기 다지기.

>>> d = { 'a':'123', 'b':456, 'c': { 'cc1':1, 'cc2':2 } }
>>> d
{'a': '123', 'c': {'cc1': 1, 'cc2': 2}, 'b': 456}
>>> type(d).__name__
'dict'
강조해도 지나치지 않을 만큼 Dictionary 자료구조(약칭 dict)는 엄청 유용하고 자주 쓰인다. dict를 가지고 노는 일반적인 방법을 정리해 보자.
d = {}
중괄호({, })로 둘러쌓인 데이터는 dict를 의미한다.
d = { 'key':data }
dict에 들어가는 데이터는 키(key)와 이에 매칭되는 데이터(data)로 구성된다. 중괄호 내부에 표시된 내용에 콜론(:)이 표시되어 있으면 이는 키와 데이터를 구분하기 위한 표식이라는 의미다.
print d['key']
dict 구성요소 읽기는 키 값을 대괄호에 넣어줌으로써 할 수 있다.
d['key'] = new data
물론 비슷하게 데이터를 바꾸거나 생성 할 수도 있다.
if d.has_key('key'): print 'Key was exists'
특정 키가 dict에 있는지 확인해 볼 수도 있다.
del(d['key'])
파이썬의 일반적인 방법으로 특정 키를 지울(del) 수도 있다. 이상하게 종종 까먹어서 d.del(‘key’) 이런 식으로 적어보다 에러를 보고 조급해 지기도 한다. –_–;
>>> d = {'c': {'cc1': 1, 'cc2': 2}, 'b': 456}
>>> len(d)
2
물론 len()으로 내용물의 갯수를 알 수도 있다. 하지만 nested list(dict의 특정 키에 배정된 데이터가 dict이거나 list이거나 tuple이거나 등등) 일 경우에도 한 개로 취급된다는 점을 주의해야 한다.
>>> d.keys()
['c', 'b']
dict의 키를 알고 싶다면 keys()를 이용해 각 키의 리스트를 얻을 수 있다.
기본적인 dict의 기능을 살펴봤지만 사실 이게 전부 라고 봐도 된다.

dict는 프로토콜을 가공하는 분야에서도 필수라고 봐도 된다. 보편적인 프로토콜용 언어로 쓰이는 XML이나 JSON은 dict타입의 데이터로 표시하는게 가능하다. 단지 XML의 엘리먼트는 중복표시가 가능하기 때문에 무작정 dict로 구성하는건 문제가 있겠지만 말이다. (XML자체는 list나 tuple만으로 만드는게 맞을 가능성이 높다)

물론 dict내부에 list나 tuple을 데이터로 이용하는 것도 가능하다. 이를 바탕으로 XML이나 JSON을 통합해서 표시할 수 있는 convertor를 만든다면 두 프로토콜을 동시에 이용이 가능한 서버나 클라이언트를 만들 수 있다는 말이 된다.

세삼스럽지만 역시 기본기는 중요하다. 고급 기술을 난사하다가 기본기를 잊어먹는 어이없는 사태는 피하자.

댓글 없음 :