如果我有值,我会知道如何获取密钥。哪个班级得分更高?
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)
答案 0 :(得分:2)
我在评论中说的是,当您获得classTypes
时,需要获得mark
。因为当您获得更高的分数时,您还希望获得相应的键值。
保持代码的逻辑我会做这样的事情:
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”。