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

标签 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]]] 也给我一个错误。我现在应该尝试什么?

最佳答案

你的字典应该有一个字符串数组的数组作为值。

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后改进了答案.

关于arrays - 如何制作一个以二维数组为值的字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53388122/

相关文章:

arrays - Julia:函数参数 - 数组的类型规范

swift - Xcode/Swift 代码折叠

python - 将字典列表转换为 DataFrame 时出现类型错误

c++当在 map 中找不到条目时

arrays - 在 MIPS 中仅在运行时已知的数组大小

javascript - 数组比较不起作用

ios - 在真实设备上获取位置不起作用

xcode - 检测弹出窗口关闭

python - 在函数中定义字典时Python中的内存泄漏

C - 如何检查不需要的字符是否在数组中?