按键sorting字典

我想在Swift中sorting字典。 我有一个字典,如:

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

等我想要它像

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

等等

我已经尝试了很多解决scheme,但没有人为我工作。 我正在使用XCode6 Beta 5,并且有一些编译器出错,一些解决scheme给出了exception。 所以任何人都可以发布字典sorting的工作副本。

 let dictionary = [ "A" : [1, 2], "Z" : [3, 4], "D" : [5, 6] ] let sortedKeys = Array(dictionary.keys).sorted(<) // ["A", "D", "Z"] 

编辑:

上述代码中的sorting数组仅包含键,而值必须从原始字典中检索。 然而, 'Dictionary'也是(key,value)对的'CollectionType' ,我们可以使用全局的'sorted'函数来得到一个包含键和值的有序数组,如下所示:

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

编辑2:目前更喜欢每月更改Swift语法

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

全局sorted已被弃用。

Swift 2.0

Ivica M的更新版本的答案是:

 let wordDict = [ "A" : [1, 2], "Z" : [3, 4], "D" : [5, 6] ] let sortedDict = wordDict.sort { $0.0 < $1.0 } print("\(sortedDict)") // 

Swift 3

 wordDict.sorted(by: { $0.0 < $1.0 }) 

注意:

你们中的一些人似乎很惊讶,结果数组不是一本字典。 字典不能sorting ! 结果数据types是一个有序数组,就像@ Ivica的答案一样。

如果你想以键sorting的顺序遍历键和值,这个表格是非常简洁的

 let d = [ "A" : [1, 2], "Z" : [3, 4], "D" : [5, 6] ] for (k,v) in Array(d).sorted({$0.0 < $1.0}) { println("\(k):\(v)") } 

在iOS 9&xcode 7.3中“sorting”,swift 2.2是不可能的,将“sorted”改为“sort”,如下所示:

 let dictionary = ["main course": 10.99, "dessert": 2.99, "salad": 5.99] let sortedKeysAndValues = Array(dictionary).sort({ $0.0 < $1.0 }) print(sortedKeysAndValues) //sortedKeysAndValues = ["desert": 2.99, "main course": 10.99, "salad": 5.99] 

对于Swift 3来说,以下types通过键来返回sorting字典:

 let unsortedDictionary = ["4": "four", "2": "two", "1": "one", "3": "three"] let sortedDictionary = unsortedDictionary.sorted(by: { $0.0.key < $0.1.key }) print(sortedDictionary) // ["1": "one", "2": "two", "3": "three", "4": "four"] 

对于Swift 3来说,下面的代码对我有效,Swift 2语法没有奏效:

 // menu is a dictionary in this example var menu = ["main course": 10.99, "dessert": 2.99, "salad": 5.99] let sortedDict = menu.sorted(by: <) // without "by:" it does not work in Swift 3