스위프트 사전


Swift 사전은 동일한 유형의 정렬되지 않은 데이터 모음을 저장하는 데 사용됩니다. Swift 사전은 요소 유형을 강제로 감지하고 유형이 다른 경우 오류를 보고합니다.

Swift 사전의 각 값은 고유 키와 연결되어 있으며, 키는 사전에 있는 값 데이터의 식별자 역할을 합니다.

배열의 데이터 항목과 달리 사전의 데이터 항목에는 특정 순서가 없습니다. 식별자(키)를 통해 데이터에 액세스해야 할 때 사전을 사용합니다. 이 방법은 실제 세계에서 단어 의미를 찾기 위해 사전을 사용하는 방식과 거의 동일합니다.

Swift 사전 키에는 유형 제한이 없으며 정수 또는 문자열일 수 있지만 고유해야 합니다.

사전을 생성하여 변수에 할당하면 생성된 사전을 수정할 수 있습니다. 이는 사전이 생성된 후 사전의 항목을 추가, 삭제 또는 수정하여 변경할 수 있음을 의미합니다. 사전을 상수에 할당하면 사전을 수정할 수 없으며, 사전의 크기나 내용도 수정할 수 없습니다.


사전 만들기

다음 구문을 사용하여 특정 유형의 빈 사전을 만들 수 있습니다.

var someDict =  [KeyType: ValueType]()

다음은 Int 유형의 키와 String 유형의 값을 사용하여 빈 사전을 만드는 간단한 구문입니다.

var someDict = [Int: String]()

아래 사전의 인스턴스를 생성하려면:

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]

사전 액세스

사전의 인덱스에 따라 배열 요소에 액세스할 수 있으며 구문은 다음과 같습니다.

var someVar = someDict[key]

방법을 배울 수 있습니다. 다음 예를 통해 사전을 생성, 초기화 및 액세스합니다.

import Cocoa

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]

var someVar = someDict[1]

print( "key = 1 的值为 \(someVar)" )
print( "key = 2 的值为 \(someDict[2])" )
print( "key = 3 的值为 \(someDict[3])" )

위 프로그램 실행의 출력 결과는 다음과 같습니다.

key = 1 的值为 Optional("One")
key = 2 的值为 Optional("Two")
key = 3 的值为 Optional("Three")

사전 수정

updateValue(forKey:)를 사용하여 추가할 수 있습니다. 또는 사전의 내용을 업데이트하세요. 키가 없으면 값을 추가하고, 있으면 키에 해당하는 값을 수정합니다. updateValue(_:forKey:) 메소드는 Optional 값을 반환합니다. 예는 다음과 같습니다.

import Cocoa

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]

var oldVal = someDict.updateValue("One 新的值", forKey: 1)

var someVar = someDict[1]

print( "key = 1 旧的值 \(oldVal)" )
print( "key = 1 的值为 \(someVar)" )
print( "key = 2 的值为 \(someDict[2])" )
print( "key = 3 的值为 \(someDict[3])" )

위 프로그램 실행의 출력 결과는 다음과 같습니다.

key = 1 旧的值 Optional("One")
key = 1 的值为 Optional("One 新的值")
key = 2 的值为 Optional("Two")
key = 3 的值为 Optional("Three")

다음과 같이 키를 지정하여 사전의 값을 수정할 수도 있습니다.

import Cocoa

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]

var oldVal = someDict[1]
someDict[1] = "One 新的值"
var someVar = someDict[1]

print( "key = 1 旧的值 \(oldVal)" )
print( "key = 1 的值为 \(someVar)" )
print( "key = 2 的值为 \(someDict[2])" )
print( "key = 3 的值为 \(someDict[3])" )

의 출력 결과 위 프로그램의 실행은 다음과 같습니다.

key = 1 旧的值 Optional("One")
key = 1 的值为 Optional("One 新的值")
key = 2 的值为 Optional("Two")
key = 3 的值为 Optional("Three")

Remove Key -Value pair

우리는 removeValueForKey() 메소드를 사용하여 사전 키-값 쌍을 제거할 수 있습니다. 이 메서드는 키가 존재하면 제거된 값을 반환하고, 존재하지 않으면 nil을 반환합니다. 예는 다음과 같습니다.

import Cocoa

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]

var removedValue = someDict.removeValueForKey(2)

print( "key = 1 的值为 \(someDict[1])" )
print( "key = 2 的值为 \(someDict[2])" )
print( "key = 3 的值为 \(someDict[3])" )

위 프로그램 실행의 출력 결과는 다음과 같습니다.

key = 1 的值为 Optional("One")
key = 2 的值为 nil
key = 3 的值为 Optional("Three")

키 값을 nil로 지정하여 키-값(키-값) 쌍을 제거할 수도 있습니다. 예는 다음과 같습니다.

import Cocoa

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]

someDict[2] = nil

print( "key = 1 的值为 \(someDict[1])" )
print( "key = 2 的值为 \(someDict[2])" )
print( "key = 3 的值为 \(someDict[3])" )

위 프로그램 실행 출력은 다음과 같습니다.

key = 1 的值为 Optional("One")
key = 2 的值为 nil
key = 3 的值为 Optional("Three")

사전 탐색

우리는 for-in 루프를 사용하여 사전의 키-값 쌍을 탐색할 수 있습니다. 예는 다음과 같습니다.

import Cocoa

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]

for (key, value) in someDict {
   print("字典 key \(key) -  字典 value \(value)")
}

위 프로그램 실행의 출력 결과는 다음과 같습니다.

字典 key 2 -  字典 value Two
字典 key 3 -  字典 value Three
字典 key 1 -  字典 value One

또한 enumerate() 메서드를 사용하여 사전 인덱스와 (키, 값) 쌍을 반환하는 사전 순회를 수행할 수도 있습니다.

import Cocoa

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]

for (key, value) in someDict.enumerate() {
    print("字典 key \(key) -  字典 (key, value) 对 \(value)")
}

Above 프로그램 실행의 출력 결과는 다음과 같습니다.

字典 key 0 -  字典 (key, value) 对 (2, "Two")
字典 key 1 -  字典 (key, value) 对 (3, "Three")
字典 key 2 -  字典 (key, value) 对 (1, "One")

사전을 배열로 변환

사전의 키-값 쌍을 추출하여 독립 배열로 변환할 수 있습니다. 예는 다음과 같습니다.

import Cocoa

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]

let dictKeys = [Int](someDict.keys)
let dictValues = [String](someDict.values)

print("输出字典的键(key)")

for (key) in dictKeys {
    print("\(key)")
}

print("输出字典的值(value)")

for (value) in dictValues {
    print("\(value)")
}

위 프로그램 실행의 출력 결과는 다음과 같습니다.

输出字典的键(key)
2
3
1
输出字典的值(value)
Two
Three
One

count 속성

읽기 전용 count 속성을 사용하여 사전에 있는 키-값 쌍 수를 계산할 수 있습니다.

import Cocoa

var someDict1:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var someDict2:[Int:String] = [4:"Four", 5:"Five"]

print("someDict1 含有 \(someDict1.count) 个键值对")
print("someDict2 含有 \(someDict2.count) 个键值对")

위 프로그램 실행의 출력 결과는 다음과 같습니다.

someDict1 含有 3 个键值对
someDict2 含有 2 个键值对

isEmpty attribute

Y 우리는 isEmpty 속성을 읽어서 사전이 비어 있는지 확인하고 부울 값을 반환하기만 하면 됩니다.

import Cocoa

var someDict1:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var someDict2:[Int:String] = [4:"Four", 5:"Five"]
var someDict3:[Int:String] = [Int:String]()

print("someDict1 = \(someDict1.isEmpty)")
print("someDict2 = \(someDict2.isEmpty)")
print("someDict3 = \(someDict3.isEmpty)")

위 프로그램 실행의 출력 결과는 다음과 같습니다.

someDict1 = false
someDict2 = false
someDict3 = true