자료구조 중에서 키를 통해서 값을 사용하는 매핑타입(또는 해쉬타입이라고도 한다.)이 있다. 현재 파이썬에서는 딕션너리(dictionary)가 유일한 매핑타입이다.
딕션너리는 {key: value} 형식으로 만들거나, dict생성자로 만들 수 있다. dict생성자는 다양한 방법으로 딕셔너리를 만들 수 있는 것을 볼 수 있다.
>>> a = dict(one=1, two=2, three=3)
>>> b = {'one': 1, 'two': 2, 'three': 3}
>>> c = dict(zip(['one', 'two', 'three'], [1, 2, 3]))
>>> d = dict([('two', 2), ('one', 1), ('three', 3)])
>>> e = dict({'three': 3, 'one': 1, 'two': 2})
>>> a == b == c == d == e
True
len(d)
딕션너리 d에 있는 아이템 수를 리턴한다. (아이템 수는 키의 수와 동일하다.)
d[key]
d에 key로 저장된 값을 리턴한다. 만일 key가 없으면 KeyError가 발생한다.
d.get(key[, default])
d에서 key의 값을 리턴한다. 두번째 인자인 default를 전달하지 않고 key가 없으면 None을 리턴하고, 두번째 인자인 default를 전달하고 key가 없으면 default를 리턴한다. d[key]와 다르게 key가 없어도 KeyError가 발생하지 않는다.
del d[key]
d에서 key를 삭제한다. ( key의 값도 같이 삭제된다. ) 만일 key가 없으면 KeyError가 발생한다.
key in d
d에 key가 있으면 True, 없으면 False를 리턴한다.
key not in d
d에 key가 없으면 True, 있으면 False를 리턴한다.
iter(d)
d의 키들을 iterator로 리턴한다. 이것은 iter(d.keys())의 숏컷(shortcut)이다.
d.clear()
d의 모든 아이템들을 삭제한다.
d.copy()
d의 복사본을 리턴한다.
d.fromkeys(seq[, value])
복사본을 만들고 싶은 키값들을 첫번째 인자인 seq로 전달한다. seq는 list, tuple, set타입이다. 두번째 인자인 value에 값을 전달하면 복사본의 값들은 다 value가 된다. 만일 2번째 인자를 전달하지 않으면 None값을 가진다.
d.items()
d에 있는 키와 값들을 (key, value) 쌍들로 딕셔너리 뷰 객체(Dictionary view object)로 리턴한다.
d.keys()
d이 있는 키들을 딕셔너리 뷰 객체로 리턴한다.
d.values()
d에 있는 값들을 딕셔너리 뷰 객체로 리턴한다.
d.pop(key[, default])
d에 key가 있으면 key가 삭제되고 해당 key의 값을 리턴한다. default를 전달하고 key가 있으면 default와 상관없이 해당 key의 값이 리턴된다. 만일 default를 전달하지 않고 key가 없으면 KeyError가 발생하지만, default를 전달하고 key가 없으면 default가 리턴된다.
d.popitem()
LIFO순으로 마지막에 입력한 아이템을 삭제하고 (key, value) 튜플로 리턴한다. 만일 d가 비어있는데 popitem()사용시 KeyError가 발생한다. ( python3.7에서는 정확한 LIFO이 보장되지만, 이전 버전에는 불안정하다. )
d.setdefault(key[, default])
d에 key가 있으면 deafult에 상관없이 key의 해당 값을 리턴한다. 만일 key가 없고 default를 전달하면 key에 default를 값으로 아이템을 추가하고 default를 리턴한다. 만일 key가 없고 default를 전달하지 않으면 key에 None값으로 아이템을 추가하고 None을 리턴한다.
d.update([other])
키와 값 쌍으로 이루어진 other를 전달하여 d에 키와 값들을 추가한다. 만일 키가 존재하면 해당 키의 값을 덮어쓴다. update()메서드는 None을 리턴한다. other은 dict 생성자에서 사용하는 다양한 방법으로 키와 쌍을 전달할 수 있다.