从值字典数组中检索键

时间:2017-09-27 09:21:29

标签: arrays swift dictionary

如果我有值,我会知道如何获取密钥。哪个班级得分更高?

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)

1 个答案:

答案 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”。