[解決済み] Swiftで辞書を繰り返し使用する
2022-02-08 04:58:11
質問
私は、XcodeがSwift Programming Language Guideのこの実験に対して私に与えている答えに少し混乱しています。
// Use a for-in to iterate through a dictionary (experiment)
let interestingNumbers = [
"Prime": [2, 3, 5, 7, 11, 13],
"Fibonacci": [1, 1, 2, 3, 5, 8],
"Square": [1, 4, 9, 16, 25]
]
var largest = 0
for (kind, numbers) in interestingNumbers {
for number in numbers {
if number > largest {
largest = number
}
}
}
largest
辞書を横取りしているうちに、一番大きな数字が変数にセットされるようになったということですね。
largest
. しかし、私はなぜ Xcode が次のように言っているのか混乱しています。
largest
が5回設定されていたり、1回設定されていたり、3回設定されていたり、それぞれのテストによって異なります。
コードを見てみると、"Prime"だけでは6回設定する必要があることがわかります(2、3、5、7、11、13)。それから、"Fibonacci" の中の数字はすべて最大値より小さいので、スキップされるはずです。次に、16に設定し、最後に"Square"で25に設定し、合計8回になります。
私は、全く当たり前のことを見逃しているのでしょうか?
どのように解決するのですか?
Swift (および他の言語) の辞書は順序付けされていません。辞書を通して反復するとき、順序が初期化順序と一致する保証はありません。この例では、Swift は他のキーの前に "Square" キーを処理します。ループに print 文を追加することで、これを見ることができます。25はSquareの5番目の要素なので、最大のものはSquareの5つの要素のために5回設定され、その後25にとどまるでしょう。
let interestingNumbers = [
"Prime": [2, 3, 5, 7, 11, 13],
"Fibonacci": [1, 1, 2, 3, 5, 8],
"Square": [1, 4, 9, 16, 25]
]
var largest = 0
for (kind, numbers) in interestingNumbers {
println("kind: \(kind)")
for number in numbers {
if number > largest {
largest = number
}
}
}
largest
これが印刷されます。
kind: Square kind: Prime kind: Fibonacci
関連
-
[解決済み] 辞書を値で並べ替えるにはどうしたらいいですか?
-
[解決済み] Pythonで辞書に新しいキーを追加するにはどうすればよいですか?
-
[解決済み] 与えられたキーがすでに辞書に存在するかどうかをチェックする
-
[解決済み] Pythonの辞書からキーを削除するにはどうしたらいいですか?
-
[解決済み] 辞書のリストを辞書の値でソートするにはどうしたらいいですか?
-
[解決済み] 辞書から要素を削除する
-
[解決済み] リスト内包型辞書の作成
-
[解決済み] Swift Betaのパフォーマンス:配列のソート
-
[解決済み】forループを使った辞書の反復処理
-
[解決済み] ある項目のDictionaryを別のDictionaryに追加する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Swiftで辞書を繰り返し使用する
-
[解決済み】TypescriptでDictionaryを宣言し、初期化する。
-
[解決済み] Pythonでリストからキーと空の値でdictを初期化する方法は?
-
[解決済み】地図上のキーを削除する
-
[解決済み】辞書テキストファイル【終了しました
-
[解決済み】KotlinでListをMapに変換する方法は?
-
[解決済み】辞書を反復処理する方法はありますか?
-
[解決済み] GroovyでMapをループスルーする?
-
[解決済み] ある項目のDictionaryを別のDictionaryに追加する方法
-
[解決済み] Clojureでマップの値に関数をマッピングする