嘿,我一直在这里看一些非常好的问题。关于如何将数组转换为字典,但问题是没有保持相同的顺序示例:
list = ["test", "test2", "test3"]
outPut:
listNewFromExt = ["test": "test","test3": "test3", "test2": "test2"]
基本上test3正在与test2交换位置
代码:
let listNewFromExt = list.toDictionary{($0, $0)}
extension Sequence {
public func toDictionary<K: Hashable, V>(_ selector: (Iterator.Element) throws -> (K, V)?) rethrows -> [K: V] {
var dict = [K: V]()
for element in self {
if let (key, value) = try selector(element) {
dict[key] = value
}
}
return dict
}
}
另外,如果你能告诉我如何制作.values&#34; nil&#34;而不是一个很棒的密钥副本。
答案 0 :(得分:0)
在Swift中,Dictionary
是一个无序的设计集合。因此,从Array
迁移后,您无法保留任何订单。
如果您希望自己的值为nil
,请使用
let dict = Dictionary<Int, Any?>(uniqueKeysWithValues: [1, 2, 3].map { ($0, nil) })
评估为[2: nil, 3: nil, 1: nil]
如果你想要某种排序(没有双关语),你可以将dict转换为一个排序的元组数组:
let sortedTupleArray = dict.sorted { $0.key > $1.key }
评估为[(key: 3, value: nil), (key: 2, value: nil), (key: 1, value: nil)]