Dictionary (key , value) order

前端 未结 2 1139
一整个雨季
一整个雨季 2021-01-28 03:35

Assume i have the following code

var dictionary = [\"cat\": 2,\"dog\":4,\"snake\":8]; // mutable dictionary
var keys  = dictionary.keys
var values = dictionary.         


        
相关标签:
2条回答
  • 2021-01-28 03:46

    No, it is not guaranteed to be in the same order. From documentation:

    Swift’s Dictionary type is an unordered collection. The order in which keys, values, and key-value pairs are retrieved when iterating over a dictionary is not specified.

    0 讨论(0)
  • 2021-01-28 03:57

    The definition of the keys and values property is preceded by the following comments:

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

    My interpretation of

    Keys/Values appear in the same order as they occur as the .0/.1 member of key-value pairs in self.

    is that dictionary.keys and dictionary.values return the keys and values in "matching" order.

    So the key-value pairs of a dictionary do not have a specified order, but the first, second, ... element of dictionary.values is the dictionary value corresponding to the first, second, ... element of dictionary.keys.

    0 讨论(0)
提交回复
热议问题