Как сделать словарь с 2D-массивом в качестве значения? - PullRequest
0 голосов
/ 20 ноября 2018

Я пытаюсь создать словарь в 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] = [:] выдает мне ошибку, а двойное размещение, как это: var str_to_array [String: [[String]]] также выдает ошибку.Что я должен попробовать сейчас?

1 Ответ

0 голосов
/ 20 ноября 2018

Ваш словарь должен иметь массив строковых массивов в качестве значения.

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 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...