嘿,我一直在这里看一些非常好的问题。关于如何将数组转换为字典,但问题是不保持相同的顺序示例:
list = ["test", "test2", "test3"]
输出:
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“nil”而不是一个很棒的密钥副本。
在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)]