Wie füge ich mehrere Karten in Golang zusammen und vermeide gleichzeitig doppelte Werte?

Susan Sarandon
Freigeben: 2024-10-27 15:39:02
Original
834 Leute haben es durchsucht

How to Merge Multiple Maps in Golang While Avoiding Duplicate Values?

Karten in Golang zusammenführen

Problem:
Mehrere Karten zusammenführen, dabei Werte beibehalten, die kartenübergreifend mit demselben Schlüssel verknüpft sind.

Erster Ansatz:

Der bereitgestellte Code versucht, Karten zusammenzuführen, indem er über jede Karte iteriert und Werte zur Ergebniskarte basierend auf übereinstimmenden Schlüsseln hinzufügt. Dieser Ansatz verarbeitet jedoch keine doppelten Werte innerhalb der Ergebniskarte.

Einfache Zusammenführung:

Eine überarbeitete Zusammenführungsfunktion kann implementiert werden, um Duplikate durch Anhängen von Werten an Slices zu verarbeiten mit Schlüsseln in der Ergebniskarte verknüpft.

<code class="go">func merge(ms ...map[string]string) map[string][]string {
    res := map[string][]string{}
    for _, m := range ms {
        for k, v := range m {
            res[k] = append(res[k], v)
        }
    }
    return res
}</code>
Nach dem Login kopieren

Duplikate vermeiden:

Um Duplikate in der Ergebniskarte zu vermeiden, kann die Zusammenführungsfunktion geändert werden, um nach vorhandenen zu suchen Werte vor dem Anhängen:

<code class="go">func merge(ms ...map[string]string) map[string][]string {
    res := map[string][]string{}
    for _, m := range ms {
    srcMap:
        for k, v := range m {
            // Check if (k,v) was added before:
            for _, v2 := range res[k] {
                if v == v2 {
                    continue srcMap
                }
            }
            res[k] = append(res[k], v)
        }
    }
    return res
}</code>
Nach dem Login kopieren

Testen:

<code class="go">m1 := map[string]string{"id_1": "val_1"}
m2 := map[string]string{"id_2": "val_2", "id_1": "val_1"}
m3 := map[string]string{"id_1": "val_3"}

res := merge(m1, m2, m3)
fmt.Println(res)</code>
Nach dem Login kopieren

Ausgabe:

map[id_1:[val_1 val_3] id_2:[val_2]]
Nach dem Login kopieren

Dies demonstriert die Zusammenführen von Karten, Beibehalten der mit demselben Schlüssel verknüpften Werte und Vermeiden von Duplikaten.

Das obige ist der detaillierte Inhalt vonWie füge ich mehrere Karten in Golang zusammen und vermeide gleichzeitig doppelte Werte?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!