2014-12-08 2 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 - неупорядоченная коллекция. Порядок, в котором ключи, значения и пары ключ-значение извлекаются, когда итерация по словарю не указана.

+0

Это правда. Хотя опыт показывает, что они выглядят в одном порядке для простых тестов, для этого нет никакой гарантии. Если вам нужен определенный порядок, используйте отдельный массив для ключей. –

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.

Смежные вопросы