单行:创建dict键或更新计数



似乎应该有一种简单的方法来做到这一点:

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
}

,但似乎必须有一种更优雅的单行方式来执行此操作?

您可以使用三元运算符:

for token in tokens {
    myDict[token] = myDict[token] ? myDict[token]! + 1 : 1
}

更好的是,使用零合并:

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 }
tokens.map{ myDict[$0] = (myDict[$0] ?? 0) + 1  }

相关内容

  • 没有找到相关文章

最新更新