2014-12-08 106 views
0

假設我有以下代碼詞典(鍵,值)順序

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是「狗「,」蛇「,」貓「 將dictionary.values總是4,8,2? 我在操場上試過它,結果總是表示它們具有相同的順序

回答

4

不,它不保證是在相同的順序。從文檔:

Swift's Dictionary類型是一個無序的集合。未指定在迭代 字典時檢索鍵 鍵,值和鍵值對的順序。

+0

這是真的。雖然經驗表明它們以簡單測試的相同順序出現,但不能保證。如果您需要某個訂單,請爲這些密鑰使用單獨的數組。 – 2014-12-08 08:33:20

1

keysvalues屬性的定義是由以下 評論之前:

/// 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 } 

鑰匙的解釋/值出現在爲相同的順序他們作爲/.1成員 鍵值對在self

dictionary.keysdictionary.values返回鍵和值在 「匹配」的順序。

那麼字典的鍵值對沒有特定的順序,不過 第一,第二,...的dictionary.values 元素是對應於第一,第二,...元素的字典值dictionary.keys