사전(Dictionary)

키로 색인되는 데이타(또는 객체)들을 담는 연관 배열 혹은 해시 테이블이다.

중괄호({ })로 둘어싸서 사전을 생성한다.

빈 사전 생성

>>> d1 = {}

>>> print d1
{}

>>> d2 = dict()

>>> print d2
{}

기본적인 사용 예

# 빈 사전 및 채워진 사전을 생성
>>> myDict={}
>>> myDict=dict()
>>> myDict.values()
[]

# 사전에 열쇠-값 쌍을 할당
>>> myDict['one'] = 'first'
>>> myDict['two'] = 'second'
>>> myDict
{'two': 'second', 'one': 'first'}

사전 메서드와 함수

메소드 또는 함수 설명
len(dictionary) 주어진 사전 내에서 항목의 수를 반환하는 함수
dictionary [key] 주어진 key와 관련된 사전의 항목을 반환
dictionary[key] = value 사전에서 연관된 항목에 주어진 vaule를 설정
del dictionary[key] 사전에서 주어진 key/value 쌍을 삭제
dictionary.clear() 사전에서 모든 항목을 제거하는 메소드
dictionary.copy() 사전의 얕은 복사본을 만드는 메소드
has_key(key) 사전이 주어진 key를 포함하는지의 여부를 반환하는 함수 (deprecate되었으며in을 사용하는 것을 권장)
key in d 주어진 key를 사전에서 찾을 수 있는지의 여부를 반환
key not in d 주어진 key를 사전에서 찾을 수 없는지의 여부를 반환
items() 사전에서 key/value 쌍의 사본을 포함하는 튜플의 목록을 반환
keys() 사전 내에서 key들의 목록을 반환
update([dictionary2]) 주어진 사전으로부터의 키/값 쌍으로 사전을 갱신하며, 기존 키를 덮어 씀
fromkeys(sequence[,value]) 주어진 순서형로부터 키들을 가지고 새로운 사전을 생성하며 값은 주어진 값으로 설정됨
values() 사전의 값들을 목록으로 반환
get(key[, b]) 주어진 key에 연관된 값을 반환. key가 존재하지 않으면 b를 반환
setdefault(key[, b]) 주어진 key에 연관된 값을 반환. key가 존재하지 않으면, key 값의 b에 설정됨(mydict[key] = b)
pop(key[, b]) 주어진 key에 연관된 key/value 쌍을 반환하고 제거. key가 존재하지 않는 경우 b를 반환
popItem() 임의의 key/value 쌍을 사전으로부터 pop
iteritems() 사전에 있는 key/value 쌍에 대하여 반복자를 반환
iterkeys() 사전의 key들에 대하여 반복자를 반환
itervalues() 사전의 value들에 대하여 반복자를 반환

사전(Dictionary) 데이타를 반복하기

my_dict = {"name" : "sonic", "age": 12}

# 1
for key in my_dict.keys():
    print key

# 2
for value in my_dict.values():
    print value

# 3
for key, value in my_dict.items():
    print key, value

리스트를 이용한 키 목록 얻기

>>> x = {'name': 'sonic', 'age':10, 'address':'seoul'}
>>> print x
{'age': 10, 'name': 'sonic', 'address': 'seoul'}

>>> keys = list(x)
>>> print keys
['age', 'name', 'address']
>>>

간단히 데이터를 저장하고 작은 '데이터 클래스'보다 '사전'을 사용하는 것이 대부분 나은 선택이다.

실제 사용 예제 코드

>>> # 빈 사전을 생성하고 사전을 채움
>>> mydict = {}

>>> # 사전에서 키를 찾아봄
>>> 'firstkey' in mydict
False

>>> # 사전에 key/value 쌍을 추가
>>> mydict['firstkey'] = 'firstval'
>>> 'firstkey' in mydict
True

>>> # 사전의 값들을 나열
>>> mydict.values()
['firstval']

>>> # 사전의 key들을 나열
>>> mydict.keys()
['firstkey']

>>> # 사전의 길이(key/value 쌍이 얼마나 들어있는지)를 표시
>>> len(mydict)
1

>>> # 사전의 내용을 출력
>>> mydict
{'firstkey': 'firstval'}

>>> # 원본 사전을 문자열 기반 열쇠를 가진 사전으로 대체
>>> # 다음의 사전은 하키 팀을 표현
>>> myDict = {'r_wing':'Josh','l_wing':'Frank','center':'Jim','l_defense':'Leo','r_defense':'Vic'}
>>> myDict.values()
['Josh', 'Vic', 'Jim', 'Frank', 'Leo']
>>> myDict.get('r_wing')
'Josh'
>>> myDict['r_wing']
'Josh'

>>> # 존재하지 않는 key에 대한 값을 얻기 위해 시도
>>> myDict['goalie']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'goalie'

>>> # get()을 사용하여 존재하지 않는 열쇠에 대한 값을 얻기 시도
>>> myDict.get('goalie')
>>>

>>> # 열쇠가 존재하지 않는 경우 기본 메시지를 표시
>>> myDict.get('goalie','Invalid Position')
'Invalid Position'

>>> # 사전의 항목들에 대하여 반복
>>> for player in myDict.iteritems():
...     print player
...
('r_wing', 'Josh')
('r_defense', 'Vic')
('center', 'Jim')
('l_wing', 'Frank')
('l_defense', 'Leo')

>>> # 열쇠와 값을 독립적인 개체에 할당한 다음 출력
>>> for key,value in myDict.iteritems():
...     print key, value
...
r_wing Josh
r_defense Vic
center Jim
l_wing Frank
l_defense Leo

results matching ""

    No results matching ""