5.4 딕셔너리
딕셔너리는 그 단어 자체로 알 수 있듯이 사전에서 고유 단어와 그 의미가 연결되어 있는 것처럼 Key와 Value로 데이터를 저장하는 자료형입니다. 인덱스 대신 고유 키를 사용하여 값을 얻는 것입니다.
[키: 데이터, 키: 데이터, ... ]
딕셔너리를 정의할 때는 배열과 마찬가지로 대괄호를 사용하며, 내부에 차례로 들어갈 데이터를 작성합니다. 키와 값 사이는 콜론(:)으로 구분합니다. 다음으로 딕셔너리 사용할 때의 주의점입니다.
1. 하나의 키는 하나의 데이터에만 연결되어야 합니다.
2. 하나의 딕셔너리에서 키는 중복될 수 없습니다. 중복해서 선언하면 아이템 추가가 아니라 수정이 이루어져 기존
키에 연결된 데이터가 제거됩니다.
3. 저장할 수 있는 데이터 타입에는 제한이 없지만, 하나의 딕셔너리에 저장하는 데이터 타입은 모두 일치해야 합니다
4. 딕셔너리의 아이템에는 순서가 없지만 키에는 내부적으로 순서가 있으므로 for~in 구문을 시용한 순회탐색이
가능합니다.
5. 딕셔너리에서 사용할 수 있는 키의 타입은 거의 제한이 없으나 해시(Hash) 연산이 가능한 타입이어야 합니다.
딕셔너리의 키값으로 사용할 수 있는 타입은 다양합니다.
문자열은 물론 문자(Character), 정수, 실수, 인스턴스도 가능합니다. 딕셔너리가 아이템을 저장할 때는 입력된 키를 그대로 사용하는 것이 아니라 내부적으로 해시연산을 거친 값으로 변환한 다음 이를 정렬하여 사용합니다. 이는 데이터의 빠른 검색을 위한 장치이지만, 키 타입은 해시 연산을 할 수 있는 타입으로 제한됩니다. 스위프트에서 해시 연산을 위해서는 Hashable 프로토콜이 구현되어야 하는데, 문자열 타입은 Hashable 프로토콜이 구현되어 있으므로 대부분의 딕셔너리는 문자열을 키로 사용합니다.
다음으로는 딕셔너리를 정의하는 예입니다
var capital = ["KR": "Seoul", "EN": "London", "FR": "Paris"]
이렇게 정의된 딕셔너리의 아이템 참조는 배열에서 인덱스를 참조하여 아이템을 참조하는 방식과 유사합니다. 딕셔너리가 할당된 변수나 상수에 대괄호를 붙이고 그 안에 키를 넣으면 됩니다.
capital["KR"] // "Seoul"
capital["EN"] // "London"
capital["FR"] // "Paris"
Last updated