我有一个名为 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/