【发布时间】:2021-01-19 13:46:26
【问题描述】:
我无法想出将数组转换为字典的算法。 该数组具有以下结构:
let array = [
Parameter(type: "string", name: "name1", value: "bar", parent: nil),
Parameter(type: "bool", name: "name2", value: true, parent: nil),
Parameter(type: "array", name: "name3", value: [], parent: nil),
Parameter(type: "bool", name: "name3.1", value: false, parent: "name3"),
Parameter(type: "array", name: "name3.2", value: [], parent: "name3"),
Parameter(type: "string", name: "name4.1", value: "baz", parent: "name3.2")
]
Parameter 是一个简单的结构。
输出应该是字典。在上面给出的示例中,这应该如下所示:
[
"name1": "bar",
"name2": true,
"name3": [
"name3.1": false,
"name3.2": [
"name4.1": "baz"
]
]
]
如果给定结构没有父结构,实现起来非常基本,但我在实现另一种情况时遇到了麻烦:
func makeDictionary(from array: [Parameter]) -> [String: Any] {
var dictionary: [String: Any] = [:]
for parameter in array {
if let parent = parameter.parent {
#warning("how to handle this case?")
} else {
dictionary[parameter.name] = parameter.value
}
}
return dictionary
}
由于数组可能是无序的,我将如何处理在数组“name3.2”或数组“name3”创建并在我的字典中可用之前接收到“name4.1”参数的情况?
【问题讨论】:
-
因为数组可以是无序的.. 不,它不能,数组是有序的但是字典是无序的。
-
我的意思是我不能确定一个参数是在它的父参数之前还是之后添加的。这需要某种排序。
标签: ios arrays swift algorithm dictionary