# #go
Вопрос:
Привет, я пытаюсь преобразовать срез []в карту []с одинаковыми ключами для каждого значения карты.
Пример использования следующий: предположим, вы пытаетесь преобразовать лист excel в карту. Вы знаете столбец заголовка как набор строк. Затем вы получаете строки в формате [][]строка. Чтобы получить карту, вы должны задать значения заголовка для каждого элемента в каждой строке.
Моя текущая реализация заключается в следующем
package main
import (
"fmt"
)
func main() {
header := []string{"first", "second", "third"}
rows := [][]string{{"1.1", "1.2", "1.3"}, {"2.1", "2.2", "2.3"}, {"3.1", "3.2", "3.3"}}
length := len(header)
var values []map[string]interface{}
for _, row := range rows {
dict := map[string]interface{}{}
for i, val := range row {
if i < length {
dict[header[i]] = val
}
}
values = append(values, dict)
}
fmt.Println(values)
}
Перейдите по ссылке на игровую площадку: https://play.golang.org/p/Ags779GVtD7
Проблема здесь заключается в сложности, так как вам приходится перебирать все строки, а затем устанавливать ключи для каждой строки, повторяя цикл.
Был бы признателен за предложения более эффективного способа сделать это.
Ответ №1:
Нет более эффективного способа сделать это. Если вы хотите разместить n
элементы на карте, вам придется выполнять O(n)
операции. И ваш двойной цикл приводит к n
вызову вставки.