arrays - Swift Loops 控制台的顺序不正确

标签 arrays swift loops

var letters = ["a": "Alpha", "b": "Bravo", "c": "Charlie", "d": "Delta"]

for (letter, pilotAlphabet) in letters {
    print("\(letter) stands for \(pilotAlphabet)")
}

这是我在 Playgrounds 上的代码。控制台给出了这个:

b stands for Bravo
a stands for Alpha
d stands for Delta
c stands for Charlie

我想知道为什么这个结果不是按照我给出的顺序排列的。

最佳答案

letters 是一个 Dictionary,其键和值都是 String。根据定义,字典是一个无序集合,因此在迭代字典的键值对时,排序不会与将值添加到字典的顺序相同,也不会按字母顺序排列。

如果您需要按字母顺序显示键值对,可以通过在 Dictionary 上调用 sorted 并迭代生成的 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

关于arrays - Swift Loops 控制台的顺序不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52040310/

相关文章:

javascript - Greasemonkey 弹出循环不等待加载事件监听器

swift - 从没有 switch/case 的枚举中获取关联值

python - 更多 Pythonic/Pandaic 方法循环遍历 pandas 系列

java - 仅打印 HashMap 中的特定键

javascript - 查找是否在父 div 中选中了所有复选框

ios - AirPlay图标因iOS版本而异

ios - CollectionView 的单元格不适合屏幕

php - in_array() 不返回所有结果

c - 如何按行和列对二维数组进行排序?

c - 如何在 C 中的数组的任何部分设置 "empty"元素