似乎应该有一个简单的方法来做到这一点:
for each token
look it up in a dictionary
if it's there already, increment the value by 1
else create it and set value to 1
我可以用
做到这一点for token in tokens {
if let count = myDict[token] {
myDict[token] = count + 1
} else {
myDict[token] = 1
}
但似乎必须有更优雅,单行的方式来做到这一点?
答案 0 :(得分:2)
您可以使用三元运算符:
for token in tokens {
myDict[token] = myDict[token] ? myDict[token]! + 1 : 1
}
更好的是,使用nil合并:
for token in tokens {
myDict[token] = (myDict[token] ?? 0) + 1
}
并将整个事情放在一行:
tokens.forEach { myDict[$0] = (myDict[$0] ?? 0) + 1 }
使用Swift 4(感谢Hamish),它可以缩短一点:
tokens.forEach { myDict[$0, default: 0] += 1 }
答案 1 :(得分:0)
tokens.map{ myDict[$0] = (myDict[$0] ?? 0) + 1 }