[Swift] 딕셔너리, 셋 (다수의 데이터 다루기) #2

김영민·2022년 5월 18일
0

저번 게시글에 이어서 다수의 데이터를 다루는 항목 중 딕셔너리와 셋에 대해 정리해보겠습니다.

딕셔너리(Dictionary)

  • 키-값 방식으로 값 다루기
  • 딕셔너리 내 키는 유일
  • 키: 해시값을 제공할 수 있는 Hashable

딕셔너리 생성

var dic = ["1월":"January","2월":"February"]

var dic2 : [String:Int] = ["일":1,"이":2]

var dic3 = Dictionary<String,Int> = ["one" : 1, "Two":2]
  • Dictionary<Key,Value> or [Key: Value]
var emptyDic = [Int:Int]()
  • 빈 딕셔너리 객체 생성하는 방법은 위와 같습니다.

딕셔너리 원소 접근

  • 원소 갯수 : 배열과 비슷하게 .count 사용
  • 원소 접근 : dic["1월"]
  • 없는 원소와 접근 : nil 반환 (배열과 다름)

원소 변경

원소 추가

dic1["3월"] = "March"
  • 새로운 키로 값 설정을 하여 원소를 추가할 수 있습니다.

값 변경

dic1["3월"] = "봄의 계절"
dic1.updateValue("봄의 시작",forKey:"3월")
  • 기존에 있는 키에 대한 값을 변경할 때는, 아예 대입해주거나 updateValue를 통해 변경할 수 있습니다.

원소 제거

dic1.removeValue(forKey:"2월")
dic["3월"] = nil
  • removeValue를 통해 원소를 삭제하거나, 키에 nil을 저장하여 삭제할 수 있습니다.

밸류 타입

  • 딕셔너리도 배열처럼 밸류 타입입니다.
  • 따라서 새로운 변수에 대입 시 복사가 됩니다!

딕셔너리와 배열의 혼합

let even = [2,4,6,8]
let odd = [1,3,5,7]

let dic : [String:[Int]] = ["evenNum":even, "oddNum":odd]
dic["oddNum"]![1] // optional을 풀어줘야 합니다.

셋(Set)

  • 유일한 원소
  • 원소만 저장
  • 임의의 순서

셋 객체 생성

var number : Set<Int> = [1,2,3,4]
var number2 = Set<Int>()
  • 셋은 배열을 통해 만들 수 있습니다.
  • 공백 셋은 위와 같이 만들 수 있습니다.

셋 원소 접근

  • .count, isEmpty : 배열, 딕셔너리와 동일하게 사용
number.contains(1) //true
  • .contains : 원소를 포함하고 있는지 확인합니다.

원소 접근

let index = number.startIndex
number[index] //1

let index2 = number.index(after: number.startIndex)
number[index2]  //2
  • 위와 같이 인덱스를 통해 접근할 수 있습니다.
number.first
  • .first를 통해 첫번째 원소에 접근할 수 있습니다.
let numArray = Array(number)
  • 배열 객체로 만들어 버린 후 접근할 수도 있습니다.

셋 연산

교집합 : .intersection()

var set1 : Set<Int> = [1,2,3]
var set2 : Set<Int> = [2,3,4]

let set3 = setl.intersection(set2)
set3 //{2,3}

교집합 : .union()

var set1 : Set<Int> = [1,2,3]
var set2 : Set<Int> = [2,3,4]

let set3 = setl.union(set2)
set3 //{1,2,3,4}

대칭차집합 : .symmertricDifference() (합집합 - 공통 부분)

var set1 : Set<Int> = [1,2,3]
var set2 : Set<Int> = [2,3,4]

let set3 = setl.symmertricDifference(set2)
set3 //{1,4}

차집합 : .subtracting()

var set1 : Set<Int> = [1,2,3]
var set2 : Set<Int> = [2,3,4]

let set3 = setl.subtracting(set2)
set3 //{1}

0개의 댓글