为了账号安全,请及时绑定邮箱和手机立即绑定

按键对字典排序

按键对字典排序

我想在Swift中对字典排序。我有一本字典,例如:"A" => Array[]"Z" => Array[]"D" => Array[]等,我希望它像"A" => Array[]"D" => Array[]"Z" => Array[]等等我在SO上尝试了许多解决方案,但没有人为我工作。我正在使用XCode6 Beta 5,在它上面有一些正在给编译器错误,在一些解决方案中有例外。因此,任何可以发布字典排序工作副本的人。
查看完整描述

3 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

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 。


查看完整回答
反对 回复 2019-10-08
?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

斯威夫特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)") // 

迅捷3

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

注意:


你们当中有些人似乎对结果数组不是字典感到惊讶。字典无法排序!产生的数据类型是一个排序数组,就像@Ivica的答案一样。


查看完整回答
反对 回复 2019-10-08
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

如果要按键排序顺序遍历键和值,则此格式非常简洁


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)")

}


查看完整回答
反对 回复 2019-10-08
  • 3 回答
  • 0 关注
  • 640 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信