按键对字典排序

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


"A" => Array[]

"Z" => Array[]

"D" => Array[]

等,我希望它像


"A" => Array[]

"D" => Array[]

"Z" => Array[]

等等


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


慕神8447489
浏览 642回答 3
3回答

翻过高山走不出你

let dictionary = [&nbsp; &nbsp; "A" : [1, 2],&nbsp; &nbsp; "Z" : [3, 4],&nbsp; &nbsp; "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 。

沧海一幻觉

斯威夫特2.0Ivica M的答案的更新版本:let wordDict = [&nbsp; &nbsp; &nbsp;"A" : [1, 2],&nbsp; &nbsp; &nbsp;"Z" : [3, 4],&nbsp; &nbsp; &nbsp;"D" : [5, 6]]let sortedDict = wordDict.sort { $0.0 < $1.0 }print("\(sortedDict)") //&nbsp;迅捷3wordDict.sorted(by: { $0.0 < $1.0 })注意:你们当中有些人似乎对结果数组不是字典感到惊讶。字典无法排序!产生的数据类型是一个排序数组,就像@Ivica的答案一样。

蝴蝶不菲

如果要按键排序顺序遍历键和值,则此格式非常简洁let d = [&nbsp; &nbsp; "A" : [1, 2],&nbsp; &nbsp; "Z" : [3, 4],&nbsp; &nbsp; "D" : [5, 6]]for (k,v) in Array(d).sorted({$0.0 < $1.0}) {&nbsp; &nbsp; println("\(k):\(v)")}
打开App,查看更多内容
随时随地看视频慕课网APP