๋ค์ ๊ธ์ ๊ฐ๋จํ ์ฝ๋ ์กฐ๊ฐ์ ๋จ๊ธฐ๊ธฐ ์ํ ๊ธ์ด๋ค. ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ฅผ ํ๊ฑฐ๋ ๊ฐ๋ฐ์ ํ๋ค ๋ณด๋ฉด dictionary๋ฅผ ์ฌ์ฉํ๋ ์๊ฐ์ด ์๊ฐ๋ณด๋ค ๋ง๋ค. (..๋ ์์ ์๋ array๋ง ์ฃผ๊ตฌ์ฅ์ฐฝ ์ผ์์ง.. ์ ์ ํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ ์ฌ์ ์์ ์ฐ๋ ๊ฒ๋ ์ค๋ ฅ์ธ ๊ฒ์ ๋ ์ด ๊ฐ์๋ก ๋๋๋ค..) ๋ญ ์ฌํผ dictionary๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์์ ๊ฐ ์๋ง ๋น๋๋ฅผ ๊ณ์ฐํ๋ ๋ถ๋ถ์ด ์๋๊น ์ถ๋ค.
์๋ฅผ ๋ค์ด์ ๋ค์๊ณผ ๊ฐ์ด ์ํ ์ฅ๋ฅด๊ฐ ์๋ค๊ณ ์๊ฐํด๋ณด์.
let genres = ["comedy", "romance", "comedy" , "comedy" , "action"]
์ฝ์ด๋ณด๋ฉด ์ฝ๋ฏธ๋ ์ฅ๋ฅด๊ฐ 3ํธ, ๋ก๋งจ์ค ์ฅ๋ฅด๊ฐ 1ํธ, ์ก์ ์ฅ๋ฅด๊ฐ 1ํธ ์๋ค๋ ๊ฒ์ ์ด๋ฑํ์๋ ์ ๊ฒ์ด๋ค. ๊ทผ๋ฐ ์ปดํจํฐ๋ ๋ชจ๋ฅธ๋ค. ์์๋ค๋ฉด ๋ฌธ์ ๋ฅผ ์ข ๋ ํธํ๊ฒ ํด๊ฒฐํ ์ ์์๊ฒ ์ง.. ๊ฐ ์ฅ๋ฅด๊ฐ ๋ช ํธ ์กด์ฌํ๋์ง ์๊ธฐ ์ํด์ ๋ก์ง์ ์ง์ผ ํ ํ ๋ฐ ์ง๊ด์ ์ผ๋ก dictionary ์๋ฃ๊ตฌ์กฐ๋ฅผ ์จ์ผ๊ฒ ๋ค๋ ๋๋์ด ์จ๋ค. (array๋ ์ธ ์ ์๊ฒ ์ง๋ง dictionary๊ฐ ๋ ์ ํฉํ ๊ฒ ๊ฐ๋ค. ์์ ๊ณ ๋ คํ ํ์ ์์ด ๊ทธ๋ฅ ๊ฐ์๋ง ์ธ๋ฉด ๋๋๊น)
๊ฐ์๋ฅผ ์ธ๊ธฐ ์ํด ์ด์ ์ ์งฐ๋ ์ฝ๋๋ฅผ ์ ๊น ๋ค๊ณ ์๋ณด๊ฒ ๋ค.
let genres = ["comedy", "romance", "comedy" , "comedy" , "action"]
var dict = [String: Int]()
genres.forEach {
if let count = dict[$0] {
dict[$0] = count + 1
} else {
dict[$0] = 1
}
}
// Prints
// ["action": 1, "comedy": 3, "romance": 1]
๋น dictionary๋ฅผ ๋ง๋ค์ด์ฃผ๊ณ genre ๋ฐฐ์ด์ ๋๋ฉด์ key๊ฐ ์กด์ฌํ์ง ์์๋ ๊ฒ์ ์๋ก ์ถ๊ฐํด์ฃผ๋ฉด์ value๋ฅผ 1๋ก ๋ง๋ค์ด์ฃผ๊ณ , ๊ธฐ์กด์ ๊ฐ์ด ์กด์ฌํ๋ ๊ฒ์ value๋ฅผ 1์ฉ ์ฆ๊ฐ์์ผ์ค๋ค. dictionary๋ฅผ ์ถ๋ ฅํด๋ณด๋ฉด ๊ฐ genre์ ํด๋นํ๋ ์ํ์ ๊ฐ์๋ฅผ ์ ์ ์๋ค.
์ด๋ ๊ฒ๋ง ํด๋ ๋๊ฒ ์ง๋ง, ๋ถ๊ธฐ ์ฒ๋ฆฌ๋ฅผ ํ๊ธฐ๊ฐ ์ซ๋ค. ๊ทธ๋ฅ ์๋กญ๊ฒ key๋ฅผ ์ถ๊ฐํ ๋๋ ๊ธฐ๋ณธ๊ฐ์ด ์์ผ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค. ์ญ์๋ Subscript์ default ๊ฐ์ ์ ํด์ฃผ๋ ํํ๊ฐ ์์๋ค. (์ญ์ Apple.. ๐ ... ์๊ฐํด๋ณด๋๊น Python์๋ ์๋ค ใ ..)
key๊ฐ ์กด์ฌํ์ง ์๋ ๊ฐ์ ์ ๊ทผํ๋ ค๊ณ ํ๋ฉด default ๊ฐ์ผ๋ก ์ ํด๋ ๊ฐ์ผ๋ก ๊ทธ๋ฅ key๋ฅผ ์์ฑํด์ฃผ๋ ๊ฒ์ด๋ค.
// ๊ฐ์ 1: dictionary default ๊ฐ ํ์ฉ
let genre = ["comedy", "romance", "comedy" , "comedy" , "action"]
var dict = [String: Int]()
genre.forEach { dict[$0, default: 0] += 1 }
print(dict)
// Prints
// ["action": 1, "comedy": 3, "romance": 1]
์ฝ๋๊ฐ ๊น๋ํด์ก๊ณ ๋ด ๋ง์๋ ํธํด์ก๋ค. ์ต๊ทผ์ Swift์ ์ฃผ์ด์ง ๋ฌธ๋ฒ์ ์ ํ์ฉํด์ ์ฝ๋๋ฅผ ์ ์์ฑํ๋๋ก ์ฐ์ต ์ค์ธ๋ฐ ์ฌ๋ฏธ์๋ ๊ฒ ๊ฐ๋ค. ๊ณ ์ฐจํจ์๋ฅผ ์ ํ์ฉํ ์ ์๋ ์ฌ๋์ด ๋๊ณ ์ถ๋ค. ๋ฌผ๋ก ์ฝ๋ ์คํ์ผ์ ๊ฐ์ ํ๋๋ฐ์๋ง ์น์ฐ์น์ง๋ ๋ง์.
'๐ iOS & Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ค์คํฌ๋ 1ํธ] ๊ธฐํ, ์ฐธ ์ด๋ ต๋ค... (2) | 2022.10.04 |
---|---|
[CI/CD] fastlane ๋น๋ ๋ฒํธ ์ฆ๊ฐ ์คํฌ๋ฆฝํธ (4) | 2022.10.04 |
[iOS] UIToolbar LayoutConstraint Issue (4) | 2022.09.03 |
[iOS] URLSession(1) - ๊ธฐ๋ณธ ํ๋ฆ (2) | 2022.08.30 |
[iOS+Network] Swift๋ฅผ ๊ณ๋ค์ธ URL ๊ตฌ์กฐ ๋ถ์ (2) | 2022.08.30 |