如何制作一个二维数组作为值的字典?

时间:2018-11-20 07:26:23

标签: arrays swift dictionary multidimensional-array

我正在尝试在Swift中制作一个像这样的字典:

["key1": [["val1", "val2", "val3"], ["vala", "valb", "valc"]], 
 "key2": [["test1", "test2", "test3"], ["testa", "testb", "testc"]]]

现在,我有以下代码:

var lst1 = ["val1", "val2", "val3"]
var lst2 = ["vala", "valb", "valc"]
var lst3 = ["test1", "test2", "test3"]
var lst4 = ["testa", "testb", "testc"]

var str_to_array: [String: [String]] = [:]
str_to_array["key1"] = lst1

当我打印输出时,它将为我提供所需的输出,即

["key1": ["val1", "val2", "val3"]]

但是,当我尝试将另一个列表推入字典时,像这样的相同键:

str_to_array.append(contentsOf: lst2)

我得到以下输出:

["key1": ["val1", "val2", "val3", "vala", "valb", "valc"]

在我寻找这个的时候

["key1": [["val1", "val2", "val3"], ["vala", "valb", "valc"]]

var str_to_array: [String: Array] = [:]给我一个错误,并且像这样放置double:var str_to_array [String: [[String]]]也给我一个错误。我现在应该尝试什么?

1 个答案:

答案 0 :(得分:1)

您的字典应具有字符串数组的数组作为值。

var lst1 = ["val1", "val2", "val3"]
var lst2 = ["vala", "valb", "valc"]
var lst3 = ["test1", "test2", "test3"]
var lst4 = ["testa", "testb", "testc"]

var dict: [String: [[String]]] = [:]

要存储值,您应该有一个存储列表的方法,如果值已经存在,则将列表附加到现有列表的后面。

func saveToDictionary(list: [String], withKey key: String) {
    dict[key, default: []].append(list)
}

saveToDictionary(list: lst1, withKey: "key1")
saveToDictionary(list: lst2, withKey: "key1")

print(dict)

编辑:参考了this后,改进了答案。