Maison  >  Article  >  développement back-end  >  Comment fusionner plusieurs cartes dans Golang tout en évitant les valeurs en double ?

Comment fusionner plusieurs cartes dans Golang tout en évitant les valeurs en double ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-27 15:39:02834parcourir

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

Fusion de cartes dans Golang

Problème :
Fusionner plusieurs cartes, en préservant les valeurs associées à la même clé sur les cartes.

Approche initiale :

Le code fourni tente de fusionner des cartes en itérant sur chaque carte, en ajoutant des valeurs à la carte de résultat en fonction des clés correspondantes. Cependant, cette approche ne gère pas les valeurs en double dans la carte de résultats.

Fusion simple :

Une fonction de fusion révisée peut être implémentée pour gérer les doublons en ajoutant des valeurs aux tranches. associés aux clés dans la carte de résultats.

<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>

Éviter les doublons :

Pour éviter les doublons dans la carte de résultats, la fonction de fusion peut être modifiée pour vérifier les clés existantes. valeurs avant d'ajouter :

<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>

Test :

<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>

Sortie :

map[id_1:[val_1 val_3] id_2:[val_2]]

Cela démontre les fusion de cartes, préservant les valeurs associées à la même clé et évitant les doublons.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn