首页 > 解决方案 > swift中有什么包罗万象的吗?

问题描述

我有不同的输入,将是一个字符串,如:

"James"
"James(1)"
"James(2)"

我希望仅在删除后才将这些键的值插入字典(x)

我可以用什么来表示x然后删除整个括号?

我目前的尝试如下所示:

replacingOccurrences(of: "(\((Any).self)", with: "")

但这不起作用..

所需的输出将是一个仅包含一个唯一值作为键的字典。

所以随着输入

["James" : 3, "James(1)" : 3, "James(2)" : 4, "Sarah" : 10, "Sarah(1)" : 10, "Sarah(2)" : 10 ]

我会得到这个输出

["James" : 10, "Sarah" : 30]        

标签: swift

解决方案


我喜欢 George 的解决方案,但我认为这是uniquingKeysWith:.

// Convert to [(name, value)], removing everything after "("
let keyValues = data.map { k, v in (String(k.prefix(while: { $0 != "(" })), v) }


// Sum matching values
let result = Dictionary(keyValues, uniquingKeysWith: +)

推荐阅读