我正在创建一个新词典,比如说:
var a: [Int: Int] = []
并且,我想将密钥0...n
设置为1
。
我这样做,相当野蛮地:
for i in 0...n {
a[i] = 1
}
n
可能大约是70万。而且,这"初始化"需要几个小时。
我知道我可以对阵列做到这一点:
var z: [Int] = []
z = Array(0...700000)
并且,在几秒钟内我得到一个700000元素阵列。
填写字典的正确方法是什么?非常感谢。
答案 0 :(得分:3)
我尝试运行你的代码,稍加修改,就像这样:
let n = 700000
let start = NSDate()
var a: [Int: Int] = [:] //Dictionary<Int, Int>(minimumCapacity: n)
for i in 0..<n {
a[i] = 1
}
let stop = NSDate()
let dif = stop.timeIntervalSinceDate(start)
println(dif)
这运行6.7秒。如果我更换
[:]
带
Dictionary<Int, Int>(minimumCapacity: n)
它在3秒内初始化(调试版本,没有优化)。也许你没有使用Xcode的最新版本?