你如何在 Swift 字典中找到前 3 个最大值?

Wes*_*sly 1 swift swift5

我了解到我可以通过下面的代码显示字典中最高的键和值

// champions dictionary
var champions = ["Ekko": 20, "Ahri": 10, "Vayne": 2, "Neeko": 25, "Zed": 6]

let greatestChampion = champions.max { a, b in a.value < b.value }
print greatestChampion // optional(("Ekko": 20))

Run Code Online (Sandbox Code Playgroud)

我的问题是如何显示 3 个价值最高的英雄?示例结果将是

print greatestChampion // optional(("Ekko": 20, "Neeko": 25, "Ahri": 10))
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我很想学习如何做到这一点。

Leo*_*bus 5

max 方法只能返回一个值。如果需要获取前 3 个元素,则需要按降序对它们进行排序,并使用前缀方法获取前 3 个元素


let greatestChampion = champions.sorted { $0.value > $1.value }.prefix(3)

print(greatestChampion)
Run Code Online (Sandbox Code Playgroud)

这将打印

[(key: "Neeko", value: 25), (key: "Ekko", value: 20), (key: "Ahri", value: 10)]