如何在Swift词典中找到最大值?

Sun*_*nay 9 dictionary swift

所以,假设我有一个字典,如下所示:

var data : [Float:Float] = [0:0,1:1,2:1.414,3:2.732,4:2,5:5.236,6:3.469,7:2.693,8:5.828,9:3.201]
Run Code Online (Sandbox Code Playgroud)

如何以编程方式在字典中找到最高值?是否有"data.max"命令?

Een*_*dje 20

let maximum = data.reduce(0.0) { max($0, $1.1) }
Run Code Online (Sandbox Code Playgroud)

只是一个快速的方式使用reduce.

要么:

data.values.max()
Run Code Online (Sandbox Code Playgroud)

输出:

print(maximum) // 5.828
Run Code Online (Sandbox Code Playgroud)


Nar*_*ail 12

Swift Dictionary提供了max(by :)方法.Apple的例子如下:

let hues = ["Heliotrope": 296, "Coral": 16, "Aquamarine": 156]
let greatestHue = hues.max { a, b in a.value < b.value }
print(greatestHue)
// Prints "Optional(("Heliotrope", 296))"
Run Code Online (Sandbox Code Playgroud)


Vic*_*ler 5

API 中存在一个函数,名为maxElementyou can use it very easy ,它返回最大元素,self或者nil如果序列为空,并且在您使用字典的情况下需要严格的弱排序作为闭包。您可以在以下示例中使用 like:

var data : [Float:Float] = [0:0,1:1,2:1.414,3:2.732,4:2,5:5.236,6:3.469,7:2.693,8:5.828,9:3.201]
let element = data.maxElement { $0.1 < $1.1} // (.0 8, .1 5.828)
Run Code Online (Sandbox Code Playgroud)

并通过值获得最大值,但是您可以根据自己的喜好在键上使用它进行更改,这取决于您。

我希望这对你有帮助。