사전(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