Swift:获取字典数组中键的最大值

时间:2019-09-02 20:50:43

标签: swift collections

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

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)

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您可以像在示例中一样使用max

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

这使字典具有最高的价值。

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

还要注意,使用max仍将导致整个数组被迭代。您无法避免这种情况,除非您的字典始终按值排序。然后,在那种情况下,只需使用last而不是max