2017-09-27 25 views
0

値を持っている場合は、キーを取得する方法を知っています。どのクラスが高い印をつけますか?値の辞書からキーを取得する配列

let higherMarks = [ 
"ClassA": [10,20,30,40,50,60], 
"ClassB": [15,25,35,45,55,65], 
"ClassC": [18,28,38,48,58,68], 
] 

var largest = 0 

var className = "" 

for (classTypes, marks) in higherMarks { 
for mark in marks { 
    if mark > largest { 
     largest = mark 
    } 
    } 
} 
print(largest) 
+2

あなたはすでに答えを知っています。変数名も 'classTypes' ... – Moritz

+0

Hi Moritz、私は本当にSwiftプログラミングに固執しました。それを遊び場にプリントアウトするには?ありがとう。 –

答えて

2

私は私のコメントで言っていることは、あなたがmarkを得るときclassTypesを取得する必要があるということです。高いマークを取得すると、対応するキー値も取得する必要があるためです。

私はこのような何かだろうあなたのコードのロジックを維持:

let higherMarks = [ 
    "ClassA": [10,20,30,40,50,60], 
    "ClassB": [15,25,35,45,55,65], 
    "ClassC": [18,28,38,48,58,68], 
] 

func findBestClass(in results: [String: [Int]]) -> (name: String, score: Int) { 
    var largest = 0 
    var type = "" 
    for (classType, marks) in results { 
     if let max = marks.max(), max > largest { 
      largest = max 
      type = classType 
     } 
    } 
    return (type, largest) 
} 

let best = findBestClass(in: higherMarks) 

print("The best class is \(best.name) with a score of \(best.score).") 

を私はちょうど.max()であなたの内側のループを交換し、それが複数あってはならないので、重要な変数の名前を変更しました。私の方法は、この状況でそれが適切であると分かっているので、タプルも返します。しかし、私はあなたのロジックを変更しなかったので、私は "classTypesも取得する"という意味を理解することができます。

+0

ガイドと説明のためにMoritzに感謝します。私はそれを勉強します。迅速なプログラミングには本当に新しいです。 –

関連する問題