Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie die Klassifizierungssummierung mit Golang

So implementieren Sie die Klassifizierungssummierung mit Golang

PHPz
PHPzOriginal
2023-04-24 10:54:42764Durchsuche

In der Computerprogrammierung ist die Klassifikationssummierung ein häufiges Problem, d. h. die Klassifizierung einer Reihe von Zahlen nach ihren Attributen und die Summierung der Zahlen innerhalb jeder Kategorie. Dieses Problem findet in vielen Bereichen Anwendung, beispielsweise in der Statistik, dem Data Mining, der Datenanalyse usw. In diesem Artikel stellen wir vor, wie man die kategoriale Summierung mit Golang implementiert.

Zuerst müssen wir eine Datenstruktur definieren, um eine Zahl darzustellen, die zwei Attribute enthält, nämlich numerischen Wert und Kategorie. In Golang können wir Strukturen verwenden, um diese Datenstruktur zu implementieren. Der Code lautet wie folgt:

type Data struct {
    value float64
    category string
}

Als nächstes müssen wir eine Funktion erstellen, um den Eingabedatensatz nach seiner Kategorie zu klassifizieren und die Summe zu klassifizieren die Zahlen innerhalb jeder Kategorie. Diese Funktion sollte eine Liste von Daten als Eingabe akzeptieren und ein Wörterbuch zurückgeben, in dem die Schlüssel Kategorien und die Werte die Summe der Zahlen innerhalb dieser Kategorie sind. In Golang können wir den Kartentyp verwenden, um dieses Wörterbuch zu implementieren. Der Code lautet wie folgt:

func sumByCategory(dataList []Data) map[string]float64 {
    sumsByCategory := make(map[string]float64)
    for _, data := range dataList {
        sumsByCategory[data.category] += data.value
    }
    return sumsByCategory
}

Diese Funktion erstellt zunächst eine leere Karte, um die Summe der Zahlen in jeder Kategorie zu speichern. Anschließend durchlaufen Sie die Eingabedatenliste und addieren jede Zahl zur Summe der entsprechenden Kategorie. Geben Sie schließlich die Karte zurück, die die Summe der Zahlen innerhalb jeder Kategorie enthält.

Das Folgende ist ein vollständiges Beispielprogramm zum Testen der oben implementierten Funktion:

package main

import "fmt"

type Data struct {
    value float64
    category string
}

func sumByCategory(dataList []Data) map[string]float64 {
    sumsByCategory := make(map[string]float64)
    for _, data := range dataList {
        sumsByCategory[data.category] += data.value
    }
    return sumsByCategory
}

func main() {
    dataList := []Data{
        {2.0, "A"},
        {3.2, "B"},
        {4.5, "C"},
        {1.8, "A"},
        {2.3, "B"},
        {5.1, "C"},
    }

    sumsByCategory := sumByCategory(dataList)
    fmt.Println(sumsByCategory)
}

Beim Ausführen dieses Programms werden die folgenden Ergebnisse ausgegeben:

map[A:3 B:5.5 C:9.6]
#🎜 🎜# Dieses Ergebnis zeigt, dass unsere kategoriale Summierungsfunktion die Eingabedaten korrekt nach ihren Kategorien klassifiziert und die Zahlen innerhalb jeder Kategorie summiert.

Abschließend ist zu beachten, dass bei realen Problemen die Daten sehr groß sein können und nicht alle im Speicher gespeichert werden können. In diesem Fall können wir einen externen Sortieralgorithmus verwenden, um die Daten in Teile zu sortieren und dann eine Klassifizierungssummierung durchzuführen. Dieser Algorithmus umfasst mehr integrierte Golang-Funktionen und externe Bibliotheken und geht über den Rahmen dieses Artikels hinaus.

Kurz gesagt, die Klassifizierungssummierung ist ein häufiges Problem und lässt sich in Golang sehr einfach implementieren. Mithilfe der Struktur- und Kartentypen von Golang können wir einen Datensatz einfach nach seinen Attributen klassifizieren und die Zahlen innerhalb jeder Kategorie summieren.

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Klassifizierungssummierung mit Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn