일반적으로 해시맵 또는 연관 배열로 알려져 있음
유연한 크기를 가지는 키-값 쌍
사전 생성: {} 사용, 콜론으로 구분된 키와 값을 둘러싸는 것
사전에 어떤 키가 있는지 확인하는 것은 리스트나 튜플 문법과 같음
‘b’ in d1
>> True
del 예약어나 pop 메서드를 사용해 사전의 값 삭제 가능
keys와 values 메서드는 각각 키와 값이 담긴 이터레이터 반환
키-값 쌍은 일정한 기준으로 정렬 X / keys와 values 메서드에서 반환하는 리스트는 같은 순서 가짐
update 메서드 사용하면 하나의 사전을 다른 사전과 합칠 수 있음
mapping = {}
for key, value in zip(key_list, value_list):
mapping[key] = value
응용하면
mapping = dict(zip(range(5), reversed(range(5))))
if key in some_dict:
value = some_dict[key]
else:
value = default_value
(get 메서드 사용)
Value = some_dict.get(key, default_value)
get 메서드는 해당 키가 존재하지 않을 경우 None 반환
pop 메서드는 예외 발생시킴
내장 collections 모듈은 defaultdict라는 클래스를 가짐
from collections import defaultdict
by_letter = defaultdict(list)
for word in words:
by_letter[word[0]].append(word)
set([5, 1, 4, 14])
{5, 1, 4, 14}
합집합, 교집합, 차집합, 대칭차집합 등 산술 집합 연산 제공
일반적인 집합 메서드
함수 | 대체문법 | 설명 |
---|---|---|
a.add(x) | N/A | a에 원소 x 추가 |
a.clear() | N/A | 모든 원소 제거, 빈 상태로 되돌림 |
a.remove(x) | N/A | a에서 원소 x 제거 |
a.pop() | N/A | a에서 임의의 원소 제거, 비어 있는 경우 KeyError 발생 |
a.union(b) | ``a | b`` |
a.update(b) | ``a | = b`` |
a.intersection(b) | a & b | a와 b의 교집합 |
a.intersection_update(b) | a &= b | a에 a와 b의 교집합 대입 |
a.difference(b) | a - b | a와 b의 차집합 |
a.difference_update(b) | a -= b | a에 a와 b의 차집합 대입 |
a.symmetric_difference(b) | a ^ b | a와 b의 대칭차집합 |
a.symmetric_difference_update(b) | a ^= b | a에 a와 b의 대칭차집합 대입 |
a.issubset | N/A | a의 모든 원소가 b에 속하면 True |
a.issuperset(b) | N/A | a가 b의 모든 원소를 포함할 경우 True |
a.isdisjoint(b) | N/A | a와 b 모두에 속하는 원소가 없을 경우 True |