我有一个Strings和Bools的字典,这里简化了:
var dict: [String : Bool] = ["A": true, "B": false, "C": true]
我想将其转换为如下所示的字典数组(即dict键和值都将成为另一个词典中的值,但是每个词典键和值都将具有“ id”和“ enabled”的新词典键:>
var array = [["id": "A", "enabled": true], ["id": "B", "enabled": false], ["id": "C", "enabled": true]]
我无法找到解决方案。最好的方法是什么?
谢谢。
答案 0 :(得分:6)
在键/值对上使用map
:
let dict: [String : Bool] = ["A": true, "B": false, "C": true]
let array = dict.map { key, value in ["id": key, "enabled": value] }
print(array)
输出:
[["id": "C", "enabled": true], ["id": "B", "enabled": false], ["id": "A", "enabled": true]]
map
的结果是一个数组。在这种情况下,它是[[String : Any]]
-具有String
键和Any
值的字典数组。在字典上运行map
会在字典的每个键/值对上执行闭包,并返回结果数组的值。在这种情况下,我们将返回从[String : Any]
和key
构建的value
字典。
答案 1 :(得分:2)
Swift 4.0
您必须采用[String : Any]
字典数组。
var dict: [String : Bool] = ["A": true, "B": false, "C": true]
var array: [[String : Any]] = []
for (key,value) in dict {
array.append(["id" : key, "enabled" : value])
}
print(array) // [["id": "C", "enabled": true], ["id": "B", "enabled": false], ["id": "A", "enabled": true]]