var letters = ["a": "Alpha", "b": "Bravo", "c": "Charlie", "d": "Delta"]
for (letter, pilotAlphabet) in letters {
print("\(letter) stands for \(pilotAlphabet)")
}
这是我在游乐场上的代码。控制台提供了以下信息:
b stands for Bravo
a stands for Alpha
d stands for Delta
c stands for Charlie
我想知道为什么这个结果不符合我给出的顺序。
答案 0 :(得分:2)
letters
是一个Dictionary
,其键和值均为String
。 Dictionary
从定义上来说是无序集合,因此当迭代字典的键-值对时,其顺序将与将值添加到字典中的顺序不同,也不会相同按字母顺序。
如果您需要按字母顺序显示键值对,可以通过在sorted
上调用Dictionary
并遍历生成的Array
元组来实现。
var letters = ["a": "Alpha", "b": "Bravo", "c": "Charlie", "d": "Delta"]
for (letter, pilotAlphabet) in letters.sorted(by: {$0.key<$1.key}) {
print("\(letter) stands for \(pilotAlphabet)")
}
输出:
a stands for Alpha
b stands for Bravo
c stands for Charlie
d stands for Delta
答案 1 :(得分:0)
当您遍历Dictionary
的内容时,您将作为键值对的无序集合进行操作。 documented的顺序在突变之间是稳定的,但在其他情况下是不可预测的。