티스토리 뷰
for문을 공부하면서 예제 하나를 돌리게 되었는데,
let numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]
for (animalName, legCount) in numberOfLegs {
print("\(animalName)s have \(legCount) legs")
}
를 하면 결과가 어떻게 나올 것 같으세요?
spiders have 8 legs
ants have 6 legs
cats have 4 legs
라는 결과가 나올 것 같다고 생각하지 않으셨나요?
저도 처음에 당연히 이런결과가 나올 거라고 생각했답니다..ㅎㅎ
그런데
이런 결과가 나왔답니다.
그래서 너무 당황했어요. 뜬금없이 가운데에 있는 ants부터 나오다니..
swift에서의 Dictionary는 알아서 정렬을 해서 프린트를 해주는 건가 싶어서
그 정렬기준을 알아내려고 해도
a -> s -> c 이라서 알파벳 기준도 아닌 것 같고
6 -> 8 -> 4 라서 숫자 기준도 아니었습니다...
막힐 땐 swift 언어 가이드를 먼저 보는 것이 나을 것 같아서
봤더니!!
"스위프트의 사전 형식에는 정의 된 순서가 없습니다. 그러므로 키, 밸류, 키/밸류 쌍의 순서는 반복문을 돌릴때 정해지지 않습니다. 특정 순서로 사전의 키 또는 값을 반복하려면 keys 또는 values 속성에 sorted () 메서드를 사용합니다"
라고 하네요.
그러면 제가 넣은 순서대로 출력하는 방법은 없을까요?
음..지금 찾아봤는데 그럴거면 배열을 쓰는 것을 나을 것 같네요ㅎㅎ..
하지만 Dictionary 안에 있는 값을 key나 value값으로 정렬해서 출력하고 싶을 수도 있겠죠?
sort 방법은 하나 예제를 알려드리자면,
let order = numberOfLegs.keys.sorted(by: <)
print(order)
결과 => ["ant", "cat", "spider"]
let order = numberOfLegs.values.sorted(by: <)
print(order)
결과 => [4, 6, 8]
let order = numberOfLegs.sorted(by: <)
print(order)
결과 => [("ant", 6), ("cat", 4), ("spider", 8)]
애플 개발자 문서에서 sorted 함수의 원형을 보시면
func sorted(by areInIncreasingOrder: ((key: Key, value: Value), (key: Key, value: Value)) -> Bool) -> [(key: Key, value: Value)]
도움이 되었으면 좋겠어요 🙏
'Swift' 카테고리의 다른 글
Swift3 ) Swift로 선택정렬(Selection Sort)짜보기 (2) | 2017.05.12 |
---|---|
Swift3 ) swift3에서 나머지 구하기 / %사용하기 (0) | 2017.02.21 |
swift3 ) Optional 개념 정리 (23) | 2017.01.25 |
Swift ) Swift 기초문법2 ( CLASS / STRUCT / ENUM ) (2) | 2017.01.23 |
Swift ) Swift 기초문법1 ( CLASS / STRUCT / ENUM ) (6) | 2017.01.22 |
- swift sort
- swift tutorial
- 피아노
- swift3
- actor
- swift delegate
- ios 13
- swift 공부
- 스위프트
- WWDC
- github
- 회고
- 제이슨 파싱
- IOS
- FLUTTER
- WKWebView
- Xcode
- Accessibility
- Combine
- SwiftUI
- swift array
- WidgetKit
- 스위프트 문법
- Swift
- fastlane
- np-hard
- iOS delegate
- np-complete
- Git
- UIBezierPath
- Total
- Today
- Yesterday