你好,我试过在Xcode9打印字典项目。就像这样:字典打印键和值在斯威夫特4
var items = ["Bear":"0", "Glass":"1", "Car":"2"]
for (key,value) in items{
print("\(key) : \(value)")
}
输出:
Glass : 1
Bear : 0
Car : 2
为什么输出不喜欢这样的:熊:0,玻璃:1,租车:2 我不明白这个道理输出。
你好,我试过在Xcode9打印字典项目。就像这样:字典打印键和值在斯威夫特4
var items = ["Bear":"0", "Glass":"1", "Car":"2"]
for (key,value) in items{
print("\(key) : \(value)")
}
输出:
Glass : 1
Bear : 0
Car : 2
为什么输出不喜欢这样的:熊:0,玻璃:1,租车:2 我不明白这个道理输出。
词典:
字典存储相同类型的键与相同类型的值之间的关联,而没有定义的排序。
每个值都与一个唯一键相关联,该键用作字典中该值的标识符。与数组中的项目不同,字典中的项目没有指定的顺序。
数组 -数组将相同类型的值存储在有序列表中。
集合 -集合在集合中存储具有相同类型的不同值并且没有定义的排序。
Dictionary
在Swift中实现为哈希映射。我们不保证Dictionary
中的商品与您添加的商品的订单具有相同的顺序。
保留项目顺序的唯一容器是Array
。你可以用它来存储元组,像这样:
var items : [(key: String, value: String)] = [(key: "Bear", value: "0"),(key: "Glass", value: "1"), (key: "Car", value: "2")]
你的迭代会按预期工作,但你会失去Dictionary's
通过下标来查找商品的能力
Arrays
正在有序值的集合。Sets
是唯一值的无序集合。Dictionaries
是无序的 键值关联的集合。所以,当您从Dictionary中迭代值时,您无法期待相同的顺序。
Dictionary
收集不下令,这是它根本不能保证订购。但Array
是。 Dictionary
以离散顺序添加值,而Array
以连续顺序添加值。
你根本不能有Array
这样的:
["a", "b", ... , "d", ... , ... , "g"] //Discrete index aren't allowed. You just can't skip any index in between.
相反,你必须具备上述阵列是这样的:
["a", "b", "d", "g"]
为了能够摆脱这种行为, Dictionary
(你不必保持以前的索引有值)被引入。所以你可以插入你喜欢的值。它不会打扰你维护任何指数。
字典类型不排序。 – Joshua
您可以改为对字典进行排序。看[这个答案](https://stackoverflow.com/a/31528848/3687801)。 – nayem