swift - 从 Swift 4 中返回的排序字典数组访问键

标签 swift sorting

我有一个名为 groupedDictionary 的字典数组,定义如下:

// The type is [String : [SingleRepository]]
let groupedDictionary = Dictionary(grouping: finalArrayUnwrapped) { (object) -> String in
        var language = "Not Known to GitHub"
        if let languageUnwrapped = object.language {
            language = languageUnwrapped
        }

        return language
    }

我可以很容易地得到所有的 key ,如下所示:

let keys = groupedDictionary.keys

但是,当我尝试在 Swift 4 中使用 sorted(by:) 对该数组进行排序时,我成功地获得了 [(key: String, value: [SingleRepository])] 类型的排序数组。

// the type is [(key: String, value: [SingleRepository])]
    let sortedGroupedDictionary =  groupedDictionary.sorted(by: { ($0.value.count) > ($1.value.count) })

如何从 sortedGroupedDictionary 中获取所有键?

无法在 sortedGroupedDictionary 上调用“.keys”,因为它具有不同的类型。

请注意:我并不是要根据键对数组进行排序。我确实根据包含每个值的数组大小的谓词对由字典组成的数组进行了排序,现在我只想提取键。

最佳答案

Dictionary.sorted(by:) 方法以键值对数组的形式返回原始字典的键和值,按您作为参数传递的谓词排序。这意味着每个元组的第一个元素就是您要查找的键。

你可以这样查看结果:

for (key, value) in sortedGroupedDictionary {
    // handle this key-value-pair
}

如果您只需要一个已排序键的数组,您可以使用

sortedGroupedDictionary.map { $0.key }

关于swift - 从 Swift 4 中返回的排序字典数组访问键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51968600/

相关文章:

ios - 类型 'AnyObject' 不符合协议(protocol) 'BooleanType'

ruby-on-rails - rails : Order model object by attribute of referenced model object

swift - SKScene View 渲染问题(见图)

mysql - 如何在 SQL 中按日期对表进行排序

python - Pandas:对列类别中的每一行进行排序/百分位数

ruby - 垂直排序游戏列表

c++ - 如何按 FIFO 顺序对 C++ 映射进行排序?

swift - 正确执行 UnwindSegue

ios - MapKit-如何添加放置图钉的位置约束?

ios - Stripe iOS : I'm not able to create charge using card id