一尘不染

按键对字典排序

swift

我想在Swift中对字典进行排序。我有一本字典,例如:

"A" => Array[]
"Z" => Array[]
"D" => Array[]

等,我希望它像

"A" => Array[]
"D" => Array[]
"Z" => Array[]

等等

我在SO上尝试了许多解决方案,但没有人为我工作。我正在使用XCode6 Beta
5,在它上面有一些正在给编译器错误,在一些解决方案中有例外。因此,任何可以发布字典排序工作副本的人。


阅读 252

收藏
2020-07-07

共1个答案

一尘不染

let dictionary = [
    "A" : [1, 2],
    "Z" : [3, 4],
    "D" : [5, 6]
]

let sortedKeys = Array(dictionary.keys).sorted(<) // ["A", "D", "Z"]

编辑:

上面代码中的排序数组仅包含键,而值必须从原始字典中检索。但是,'Dictionary'也是'CollectionType'(键,值)对的一对,我们可以使用全局'sorted'函数来获取包含键和值的排序数组,如下所示:

let sortedKeysAndValues = sorted(dictionary) { $0.0 < $1.0 }
println(sortedKeysAndValues) // [(A, [1, 2]), (D, [5, 6]), (Z, [3, 4])]

EDIT2: 目前倾向于每月更改一次的Swift语法

let sortedKeys = Array(dictionary.keys).sort(<) // ["A", "D", "Z"]

sorted不推荐使用global 。

2020-07-07