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

时间:2016-02-05 20:26:53

标签: swift dictionary

所以,我说有一个类似的字典:

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]

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

4 个答案:

答案 0 :(得分:20)

let maximum = data.reduce(0.0) { max($0, $1.1) }

使用reduce快速方法。

或:

data.values.max()

输出:

print(maximum) // 5.828

答案 1 :(得分:4)

在API中存在一个名为maxElement的函数,您可以非常轻松地使用它,如果序列为空且需要{self,则返回nilvar 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) 中的最大元素{3}}在您使用Dictionary时作为闭包。您可以在以下示例中使用like:

file1 file1.c && gcc file2.c -lm -o file2

按值获取最大值,但您可以根据需要更改键,这取决于您。

我希望这对你有所帮助。

答案 2 :(得分:1)

老实说,上面提到的解决方案可以工作,但是作为新手,对于我来说似乎还不清楚,因此这是我使用 SWIFT 5.3 在字典中找到最大值的解决方案 Xcode 12.0.1 中:

var someDictionary = ["One": 41, "Two": 17, "Three": 23]

func maxValue() {

    let maxValueOfSomeDictionary = someDictionary.max { a, b in a.value < b.value }
    print(maxValueOfSomeDictionary!.value)
  
}

maxValue()

点符号(意思是“。”)之后,将 max {} 中的代码(大括号)进行比较字典的组成部分。

答案 3 :(得分:0)

有两种方法可以在字典中找到最大值。

第一种方法:

data.values.max

第二种方法:

data.max { $0.value < $1.value}?.value

如果要查找最大密钥:

data.max { $0.key < $1.key}?.key