Bra*_*ley 1 sorting dictionary swift
检查以下字典:
var testDict: [String : Int] = [
"a" : 1,
"b" : 2,
"c" : 3,
"d" : 4
]
Run Code Online (Sandbox Code Playgroud)
现在,遍历字典的键:
for i in testDict.keys {
print(i)
}
Run Code Online (Sandbox Code Playgroud)
这将产生以下输出:
百特
但是,预期的输出将是编码顺序中的键:
A B C D
因为不是这种情况,所以我假设键已排序。如果是这样,如何对它们进行排序,更重要的是,如何将它们返回到编写时的顺序?
从苹果的文档:
与数组中的项目不同,字典中的项目没有指定的顺序
简而言之,字典项不会排序,它们通过其hashValue尽可能高效地存储(您不应对顺序进行任何假设),这就是为什么:
字典键类型必须符合哈希协议,例如集合的值类型。
第二个问题是,由于未对字典进行排序,因此您无法将内部的值或键返回到原始顺序(因为它没有任何顺序)。您可以执行的操作是按特定顺序遍历所有值和键,如下所示:
let dic = ["a" : 1, "b" : 2, "c" : 3, "d" : 4]
for key in dic.keys.sort(<) {
print("key: \(key), value: \(dic[key])")
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1338 次 |
| 最近记录: |