【发布时间】:2022-02-02 14:29:48
【问题描述】:
Apples swift-collections 包提供了Dictionary 类型的替代方案,它保证保持(而不是带来)其键值对按顺序排列(不像常规的Dictionary 类型)。但是如何将Dictionary 类型的实例转换为OrderedDictionary 类型的实例以便以后重新排序?
例如,它如何用于这个 dict:
let regularDict: [String: String] = ["key1": "value1", "key2": "value2"]
// => EITHER {key2=>value2, key1=>value1} OR {key1=>value1, key2=>value2}
let orderedDict: OrderedDictionary<String, String> = .init(/* ??? */)
我知道orderedDict 一开始会有一个随机顺序的键值条目,这对我来说很好,我只需要一个OrderedDictionary 实例,以便将来对顺序进行任何更改我让你不要迷路。我只想知道如何以一种高效的方式从Dictionary 初始化它,并确保键保持连接到正确的值。
【问题讨论】:
-
“保持……有序”是什么意思?添加它们的顺序(如果您提供无序数据进行初始化,会发生什么情况)?数字顺序?按字母顺序?通过自定义闭包还是标准排序?
-
没有办法完成您的要求。字典是一个无序的集合。如果您通过字典获取值,则无法预测您的有序字典顺序。
-
使用字典来初始化你的
OrderedDictionary没有任何意义。 -
BTW AFAIK
OrderedDictionary符合ExpressibleByDictionaryLiteral并会保留所需的顺序。这是初始化您的有序字典let orderedDic: OrderedDictionary = ["key1": "value1", "key2": "value2"]或使用另一个有序集合(如序列、集合或数组)的属性。无法预测字典或集合的顺序。 -
@LeoDabus 我刚刚添加了 cmets 以使其更加清晰,希望对您有所帮助。
标签: swift collections type-conversion ordereddictionary