在dictonary打印前2名最高分

时间:2017-10-05 13:32:40

标签: swift dictionary

代码打印出字典中的最高分。如何打印第二高分。我想打印前两个分数。

import UIKit

var people: [[String:Any]] = [
    [
        "firstName": "Sam",
        "lastName": "Newton",
        "score": 13
    ],
    [
        "firstName": "Joe",
        "lastName": "Mckenzie",
        "score": 23
    ],
]

var topPerson = people[0]
var bestScore = topPerson["score"] as! Int
var bestScore1 = topPerson["score"] as! Int

for person in people {
    if let score = person["score"] as? Int {
        if bestScore < score  {
            bestScore = score
            topPerson = person
        }
    }
}

if let first = topPerson["firstName"] as? String,
    let second = topPerson["lastName"] as? String  {
    print("\(first) \(second)")
}

2 个答案:

答案 0 :(得分:0)

添加第二个变量以跟踪第二高分。

在for循环中遍历数组时, 在检查当前元素是否是新的最高分(if bestScore < score)之后,添加&#34;否则&#34;科。 在那里检查它是否高于第二个变量中存储的分数。如果是,则将此分数分配给第二个变量。

在&#34; if&#34;在将得分分配给bestScore之前,将bestScore分配给变量,以跟踪第二高分。

答案 1 :(得分:0)

更通用的解决方案可能是按分数对字典进行排序;然后,您可以通过检查字典中的n-1索引来获得前n个结果。