iOS/🟠 Swift

[Swift] Dictionary 간단 정리

woozzang 2021. 3. 16. 16:18

λ‹€λ₯Έ μ–Έμ–΄μ—μ„œ 많이 봐왔기 λ•Œλ¬Έμ— μ΅μˆ™ν•˜λ‹€κ³  μƒκ°ν•˜μ˜€μ§€λ§Œ,

μ‹€μ œλ‘œ μ•Œκ³ λ¦¬μ¦˜ 문제λ₯Ό ν’€ λ•Œ μ‚¬μš©λ²•μ΄ 잘 λ– μ˜€λ₯΄μ§€ μ•Šμ•„μ„œ κ°„λž΅ν•˜κ²Œ μ •λ¦¬ν•˜μ˜€μŠ΅λ‹ˆλ‹€!

 

더 μžμ„Έν•œ λ‚΄μš©μ€ μŠ€μœ„ν”„νŠΈ κ³΅μ‹λ¬Έμ„œ μ—μ„œ κ³΅λΆ€ν•˜μ‹œλ©΄ λ©λ‹ˆλ‹€πŸΆ


νŠΉμ§•

1. 해쉬 ꡬ쑰

key 에 ν•΄λ‹Ήν•˜λŠ” 데이터λ₯Ό ν•΄μ‹±ν•˜μ—¬ 'identifier' 둜 μ‚¬μš©ν•©λ‹ˆλ‹€.

key λ₯Ό ν•΄μ‹±ν•˜κΈ° λ•Œλ¬Έμ— ν•΄λ‹Ή λ°μ΄ν„°μ˜ νƒ€μž…μ€ Hashable  ν”„λ‘œν† μ½œμ„ μ±„νƒν•˜κ³  μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

 

2. ν•˜λ‚˜μ˜ element λŠ” Key-Value 쌍으둜 κ΅¬μ„±λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

ν•˜λ‚˜μ˜  value λŠ” unique ν•œ key κ°’κ³Ό μ—°κ²°λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

 

3. μˆœμ„œκ°€ μ—†μŠ΅λ‹ˆλ‹€.

λ”°λΌμ„œ for-in 순회 μ‹œ 항상 같은 μˆœμ„œλ‘œ μˆœνšŒν•œλ‹€λŠ” 것을 보μž₯ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

해결법 : key λ‚˜ value λ₯Ό μ›ν•˜λŠ” κ·œμΉ™μœΌλ‘œ μ •λ ¬ν•˜μ—¬ μˆœνšŒν•©λ‹ˆλ‹€.


 

κΈ°λ³Έ 문법

/* 1 */
var myDict1: Dictionary<Int, Int> = [:]

/* 2 */
var myDict2: [Int:Int] = [:]

/* 3 */
var myDict3 = [Int:Int]()

/* 4 */
var myDict4 = [1:1, 2:2, 3:3]

 

4가지 λ°©λ²•μœΌλ‘œ Dictionary λ₯Ό 생성할 수 μžˆμŠ΅λ‹ˆλ‹€.

참고둜 빈 λ”•μ…”λ„ˆλ¦¬λ₯Ό ν‘œν˜„ν•˜λŠ” λ¦¬ν„°λŸ΄μ€ ' [:] ' μž…λ‹ˆλ‹€. ( μ½”λ“œ λ‚΄ *1*, *2* μ—μ„œ 확인 )


 

μš”μ†Œμ˜ μΆ”κ°€ 및 μ‚­μ œ

/* μœ„ μ½”λ“œλŠ” μ„œλΈŒμŠ€ν¬λ¦½νŠΈλ₯Ό μ΄μš©ν•œ μš”μ†Œ μΆ”κ°€, μ•„λž˜λŠ” μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œλ₯Ό μ‚¬μš© */
myDict4[4] = 4
myDict4.updateValue(4, forKey: 4)

/* μœ„ μ½”λ“œλŠ” μ„œλΈŒμŠ€ν¬λ¦½νŠΈλ₯Ό μ΄μš©ν•œ μš”μ†Œ μ‚­μ œ, μ•„λž˜λŠ” μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œλ₯Ό μ‚¬μš© */
myDict4[2] = nil
myDict4.removeValue(forKey: 2)

/* μœ„ μ½”λ“œλŠ” λ¦¬ν„°λŸ΄μ„ μ΄μš©ν•œ μš”μ†Œ 전체 μ‚­μ œ, μ•„λž˜λŠ” μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œλ₯Ό μ‚¬μš© */
myDict4 = [:]
myDict4.removeAll()

 

순회

/* element λ³„λ‘œ μˆœνšŒν•˜κ³ , tuple νƒ€μž…μ΄λ‹€ */
for (key, value) in myDict4 {
    print(key, value)
}

/* .keys ν”„λ‘œνΌν‹°λ₯Ό 톡해 key 만 μˆœνšŒν•  수 μžˆλ‹€ */
for key in myDict4.keys {
    ...
}

/* .values ν”„λ‘œνΌν‹°λ₯Ό 톡해 value 만 μˆœνšŒν•  수 μžˆλ‹€ */
for value in myDict4.values {
    ...
}

/* key λ₯Ό λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ μ†ŒνŒ…ν•˜μ—¬ 순회 */
for key in myDict4.keys.sorted { $0 > $1 } {
    
}

μ†ŒνŒ…ν•˜λŠ” 이유

λ”•μ…”λ„ˆλ¦¬λŠ” μˆœμ„œκ°€ μ—†λŠ” μ»¬λ ‰μ…˜μž…λ‹ˆλ‹€.

μ•„λž˜ 사진과 같이 μˆœνšŒν• λ•Œλ§ˆλ‹€ μˆœμ„œκ°€ λ°”λ€Œλ―€λ‘œ μˆœνšŒμ‹œ μˆœμ„œκ°€ μ€‘μš”ν•˜λ©΄ μ†ŒνŒ…ν•΄μ•Ό ν•©λ‹ˆλ‹€.

 

 

 

 

좔가적인 μ •λ³΄λŠ” ν•„μš”μ‹œμ— μΆ”κ°€ν•˜λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€πŸ‘πŸ»

 

 

 

끝!