Группировка карт / структур по ключу и суммирование связанных значений для массива - PullRequest
0 голосов
/ 10 июня 2019

У меня есть массив структур, которые я построил, получив счетчик частоты слов для списка предложений. Выход из этого - самые популярные слова за предложение . Мне нужно это по всем предложениям

Вот структуры:

type WordCountStruct struct {
    word string
    freq int
}

type WordCountStructArray []WordCountStruct

Это пример WordCountStructArray:

[{the 8} {and 8} {to 7} {and 6} {and 6}]

Так что это упорядоченный список для каждого предложения наиболее распространенных слов. Мне нужно сгруппировать по ключу и суммировать значения

В случае набора из 5 примеров, приведенного выше, это приведет к:

[{the 8} {to 7} {and 20}]

Я могу преобразовать структуру в интерфейс [] map [string] {}, если это проще?

1 Ответ

3 голосов
/ 10 июня 2019

Это то, что вы ищете?

package main

import "fmt"

type WordCountStruct struct {
    word string
    freq int
}

type WordCountStructArray []WordCountStruct

func main() {
    wCounts := WordCountStructArray{
        WordCountStruct{"the", 8},
        WordCountStruct{"and", 8},
        WordCountStruct{"to", 7},
        WordCountStruct{"and", 6},
        WordCountStruct{"and", 6},
    }

    fmt.Println(wCounts)

    freq := make(map[string]int)
    for _, wCount := range wCounts {
        freq[wCount.word] += wCount.freq
    }

    fmt.Println(freq)
}

https://play.golang.org/p/oCqfoCy_W2g

...