将字典分组为字典快速数组

时间:2019-03-28 20:00:43

标签: swift dictionary

我有一本这样的字典:

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]]

因此,基本上将具有相同前缀的项目放入新的子词典中。

我该如何实现?

1 个答案:

答案 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词典的一些有用行为。