Comment puis-je regrouper les données par clés en Python et renvoyer le résultat dans un format spécifique, en gérant efficacement les données avec des clés répétitives et en maintenant l'ordre ?

Linda Hamilton
Libérer: 2024-10-28 14:08:30
original
855 Les gens l'ont consulté

How can I group data by keys in Python and return the result in a specific format, effectively handling data with repeating keys and maintaining order?

Regroupement de données Python par clés

Ce guide aborde la tâche de regroupement des données par clés spécifiques en Python. Notre objectif est de parvenir à une solution de regroupement efficace et ordonnée pour l'ensemble de données donné.

Énoncé du problème

Considérez l'ensemble de données suivant représenté sous forme de paires clé-valeur :

<code class="python">input = [
          ('11013331', 'KAT'), 
          ('9085267',  'NOT'), 
          ('5238761',  'ETH'), 
          ('5349618',  'ETH'), 
          ('11788544', 'NOT'), 
          ('962142',   'ETH'), 
          ('7795297',  'ETH'), 
          ('7341464',  'ETH'), 
          ('9843236',  'KAT'), 
          ('5594916',  'ETH'), 
          ('1550003',  'ETH')
        ]</code>
Copier après la connexion

Le but est de regrouper ces paires de données par leurs clés correspondantes (le deuxième élément de chaque tuple) et de renvoyer le résultat groupé au format suivant :

<code class="python">result = [ 
           { 
             'type': 'KAT', 
             'items': ['11013331', '9843236'] 
           },
           {
             'type': 'NOT', 
             'items': ['9085267', '11788544'] 
           },
           {
             'type': 'ETH', 
             'items': ['5238761', '962142', '7795297', '7341464', '5594916', '1550003'] 
           }
         ] </code>
Copier après la connexion

Solution

Voici les étapes pour regrouper efficacement les données :

  1. Créer un dictionnaire : Utilisez un dictionnaire par défaut pour stocker les éléments de chaque clé. Initialisez le dictionnaire avec une usine par défaut qui crée une liste vide pour chaque nouvelle clé.

    <code class="python">from collections import defaultdict
    
    res = defaultdict(list)
    for v, k in input:
     res[k].append(v)</code>
    Copier après la connexion
  2. Convertissez le dictionnaire au format attendu : Pour générer le dictionnaire final Résultat, convertissez le dictionnaire en une liste de dictionnaires avec la structure souhaitée.

    <code class="python">result = [{'type': k, 'items': v} for k, v in res.items()]</code>
    Copier après la connexion

Remarques facultatives :

  • Avant Python 3.7, les dictionnaires ne maintenaient pas l'ordre d'insertion. Pour conserver l'ordre d'origine des clés, envisagez plutôt d'utiliser un OrderedDict.
  • Alternativement, la fonction itertools.groupby peut également être utilisée pour le regroupement, mais elle nécessite que l'entrée soit triée au préalable.
  • Pour les grands ensembles de données, l'utilisation d'une base de données avec une fonction de regroupement peut être plus efficace que les solutions en mémoire présentées ici.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!