假设我有以下代码
var dictionary = ["cat": 2,"dog":4,"snake":8]; // mutable dictionary
var keys = dictionary.keys
var values = dictionary.values
for e in keys {
println(e)
}
for v in values {
println(v)
}
dictionary.keys和dictionary.values的顺序是否相同
例如,如果dictionary.keys是" dog"," snake"," cat" dictionary.values总是4,8,2? 我在操场上试了一下,结果总是表明他们有相同的顺序
答案 0 :(得分:4)
不,不能保证按相同的顺序排列。来自文档:
Swift的Dictionary类型是一个无序集合。顺序在哪 迭代时,检索键,值和键值对 字典未指定。
答案 1 :(得分:1)
keys
和values
属性的定义前面有以下内容
注释:
/// A collection containing just the keys of `self`
///
/// Keys appear in the same order as they occur as the `.0` member
/// of key-value pairs in `self`. Each key in the result has a
/// unique value.
var keys: LazyBidirectionalCollection<MapCollectionView<[Key : Value], Key>> { get }
/// A collection containing just the values of `self`
///
/// Values appear in the same order as they occur as the `.1` member
/// of key-value pairs in `self`.
var values: LazyBidirectionalCollection<MapCollectionView<[Key : Value], Value>> { get }
我对
的解释键/值以与
.0
/.1
成员相同的顺序出现self
中的键值对。
是dictionary.keys
和dictionary.values
返回键和值
“匹配”订单。
因此字典的键值对没有指定的顺序,但是
dictionary.values
的第一个,第二个......元素
是与dictionary.keys
的第一个,第二个......元素对应的字典值。