swift ๋ฌธ๋ฒ•๐Ÿ–ค

[SWIFT] ๋”•์…”๋„ˆ๋ฆฌ (Dictionary)

eundeang 2023. 5. 12. 20:09
๋Œ€๊ด„ํ˜ธ์˜ ๋ฌถ์Œ, ๊ฐ ์š”์†Œ(element)๋Š” ํ‚ค(Key)์™€ ๊ฐ’(value)์˜ ์Œ์„ ์ฝœ๋ก (:)์œผ๋กœ ์ฒ˜๋ฆฌ
let dic: Dictionary<String, String> = [Key๊ฐ’: Value๊ฐ’, Key๊ฐ’: Value๊ฐ’] 
let dic: [String: String] = [Key๊ฐ’: Value๊ฐ’, Key๊ฐ’: Value๊ฐ’]

๊ทœ์น™ 

1. ํ‚ค ๊ฐ’์€ ์œ ์ผํ•ด์•ผํ•จ( ์ค‘๋ณต ๋ถˆ๊ฐ€๋Šฅ ), ๋ฐธ๋ฅ˜๊ฐ’์€ ์ค‘๋ณต ๊ฐ€๋Šฅ 
2. ๋™์ผํ•œ ํƒ€์ž… ์Œ์˜ ๋ฐ์ดํ„ฐ๋งŒ ๋‹ด์„ ์ˆ˜ ์žˆ์Œ 
3. ๋”•์…”๋„ˆ๋ฆฌ์˜ ๊ฐ’(Value)์— ๋”•์…˜๋ฆฌ ๋˜๋Š” ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜์—ฌ ์ค‘์ฒฉ๋„ ๊ฐ€๋Šฅ
4. ๋”•์…”๋„ˆ๋ฆฌ์˜ ํ‚ค(Key)๋Š” Hashableํ•ด์•ผํ•จ. (๊ฒ€์ƒ‰ ์†๋„ ๋น ๋ฆ„)

 

์–ด๋–ค ํƒ€์ž…์ด Hashable ํ• ๊นŒ?
ํ•ด์‹œํ•จ์ˆ˜์— inpu๊ฐ’์œผ๋กœ ์“ฐ์ผ ์ˆ˜ ์žˆ๋Š” "ํƒ€์ž…" (Hashable ํ”„๋กœํ† ์ฝœ ์ฑ„ํƒ) 

โŒ–์Šค์œ„ํ”„ํŠธ์˜ ๊ธฐ๋ณธ ํƒ€์ž…์€ ๋ชจ๋‘ Hashable

 

ํ•ด์‹œ ์•Œ๊ณ ๋ฆฌ์ฆ˜

Hashํ•จ์ˆ˜๋Š” Key๊ฐ’์— ๋”ฐ๋ผ์„œ ์œ ์ผํ•œ, ๊ณ ์ •๋œ value ๊ฐ’์„ ๊ฐ€์ง„๋‹ค. (ํ•ด์‹œ ๋ฐธ๋ฅ˜๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ’์ด๋‹ˆ, ์„œ๋กœ ๋‹ค๋ฅธ Input)

== ํ•ด์‹œํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ์œ ์ผํ•œ ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜์ด ๊ฐ€๋Šฅํ•œ ํƒ€์ž…์ธ์ง€์˜ ์—ฌ๋ถ€๋ฅผ ๋ฌป๋Š” ๊ฒƒ 

 

๐Ÿ”Ž๋ฐฐ์—ด์€ ๋ฐฐ์—ด ์•ˆ์— ์žˆ๋Š” ๊ฐ’๋“ค์„ ์ฐพ๊ธฐ ์œ„ํ•ด ํ•ญ์ƒ 0๋ฒˆ์งธ ์š”์†Œ๋ถ€ํ„ฐ ํƒ์ƒ‰์„ ํ•œ๋‹ค (์˜ค๋ž˜๊ฑธ๋ฆผ)

 

๋”•์…”๋„ˆ๋ฆฌ๋Š” ์ˆœ์„œ๊ฐ€ ์—†์ด ํ•ด์‰ฌํ…Œ์ด๋ธ”๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

(ํ•ด์‹œํ…Œ์ด๋ธ”์€ ์ž๋ฃŒ๊ตฌ์กฐ์ƒ, ๋งค์šฐ ๋น ๋ฅธ ๊ฒ€์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ์‚ฌ์šฉ ๋จ ==> ๋”•์…”๋„ˆ๋ฆฌ ,Set์€ ๋ฐฐ์—ด๋ณด๋‹ค ๋น ๋ฅธ ๊ฒ€์ƒ‰์„ ๊ฐ€๋Šฅ์ผ€ ํ•จ)

1) ๊ฐ’์˜ ์œ ์ผ์„ฑ ๋ณด์žฅ (ํ•ด์‹œ ์•Œ๊ณ ๋ฆฌ์ฆ˜)

2) ๊ฒ€์ƒ‰ ์†๋„์˜ ๋น ๋ฆ„ 

key value
12377 banana
12456 orange

 

 

๋นˆ ๋”•์…”๋„ˆ๋ฆฌ์˜ ์ƒ์„ฑ

๋ฌธ๋ฒ•
let dic: Dictionary<String, String> = [:]
let dic: Dictionary<String, String>()

let dic: [String: String]()

 

๋”•์…”๋„ˆ๋ฆฌ์˜ ๋ฉ”์„œ๋“œ(ํ•จ์ˆ˜) 

  • count
    • ์š”์†Œ์˜ ๊ฐœ์ˆ˜ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ (ํ‚ค์™€ ๋ฐธ๋ฅ˜๊ฐ’์„ ํ•œ์Œ์œผ๋กœ ์ทจ๊ธ‰)
  • isEmpty
    • ๋”•์…”๋„ˆ๋ฆฌ๊ฐ€ ๋น„์–ด์žˆ๋Š”์ง€๋ฅผ True ๋˜๋Š” False๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ
  • contains(where:)
    • ์‹œํ€€์Šค์— ์ง€์ •๋œ ์ˆ ์–ด๋ฅผ ๋งŒ์กฑํ•˜๋Š” ์š”์†Œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ True๋˜๋Š” False๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ
  • randomElement()
    • ๋žœ๋ค์œผ๋กœ ๋ฝ‘์€ ์š”์†Œ๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ๋ฉ”์„œ๋“œ (Named Tuple ํ˜•ํƒœ๋กœ ๋ฆฌํ„ด)