【问题标题】:Swift: Get max value for key in array of dictionariesSwift:获取字典数组中键的最大值
【发布时间】:2019-09-02 20:50:43
【问题描述】:

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

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)

感谢任何帮助!

【问题讨论】:

  • hues 是字典,arr 是字典数组

标签: swift collections


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 2012-01-09
    • 1970-01-01
    • 2022-12-02
    • 2021-09-13
    • 1970-01-01
    相关资源
    最近更新 更多