我有一本这样的字典:
var dict = ["app1.b": false, "app2.a": true, "app2.b": false, "app1.a": true, "app1.c": true, "app2.c": true]
我想以某种方式放置它们,以使最终结果看起来像这样:
[["app1.a":true,"app1.b":false,"app1.c":true],["app2.a":true,"app2.b":false,"app2.c":true]]
因此,基本上将具有相同前缀的项目放入新的子词典中。
我该如何实现?
答案 0 :(得分:1)
您在这里:)
var x = ["app1.b": false, "app2.a": true, "app2.b": false, "app1.a": true, "app1.c": true, "app2.c": true]
var xGrouping: [String: [String: Bool]] = [:]
for (key, value) in x {
let prefix = key.components(separatedBy: ".").first!
xGrouping[prefix, default: [:]][key] = value
}
var xGrouped = Array(xGrouping.values)
print(xGrouped) // [["app1.b": false, "app1.c": true, "app1.a": true], ["app2.c": true, "app2.a": true, "app2.b": false]]
注意:虽然我通常建议您自己解决此类问题,但我还是很欣赏初学者输入一种新语言可能造成的困惑。希望这有助于证明Swift词典的一些有用行为。