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 。
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的答案一样。
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)")
}
添加回答
举报