首页 > 解决方案 > Swift:获取字典数组中键的最大值

问题描述

我有一个包含字典的数组。

let arr = [["test":1], ["test":2], ["test":3], ["test":4]]

我现在需要获取包含键“test”的最高值的一个字典(无需遍历所有内容)。我在想,filter(_:)但这只会过滤掉。map(_:)也不起作用,因为我需要过滤而不是映射。

有一个示例如何获取字典中具有最高值的键,但这在这种情况下不起作用。

let hues = ["Heliotrope": 296, "Coral": 16, "Aquamarine": 156]
let greatestHue = hues.max { a, b in a.value < b.value }
print(greatestHue)

任何帮助表示赞赏!

标签: swiftcollections

解决方案


你可以max在你的例子中使用很多。

let arr = [["test":1], ["test":4], ["test":3], ["test":2]]
print(arr.max { $0["test"]! < $1["test"]! })

这给出了具有最高值的字典。

当然,!除非保证每个字典都有一个"text"键,否则使用 是不好的。

另请注意, usingmax仍会导致整个数组被迭代。除非您的字典始终按值排序,否则您无法避免这种情况。那么在这种情况下,只需使用last而不是max.


推荐阅读