Maison  >  Article  >  développement back-end  >  Voici quelques options de titre, en gardant à l'esprit le format question-réponse et l'accent mis par l'article sur le regroupement de paires de données en Python : Option 1 (Général) : * Comment regrouper des paires de données en Python basé sur S

Voici quelques options de titre, en gardant à l'esprit le format question-réponse et l'accent mis par l'article sur le regroupement de paires de données en Python : Option 1 (Général) : * Comment regrouper des paires de données en Python basé sur S

DDD
DDDoriginal
2024-10-27 09:04:30825parcourir

Here are a few title options, keeping in mind the question-answer format and the article's focus on grouping data pairs in Python:

Option 1 (General):

* How to Group Data Pairs in Python Based on Specific Indices?

Option 2 (Specific to the Solution):

Python Group By

Problème :

Étant donné un ensemble de paires de données, regroupez-les en fonction de la valeur à un index spécifié et convertissez-les dans le format souhaité.

Solution :

Pour regrouper efficacement les paires de données par type, suivez ces étapes :

Étape 1 : Créer un dictionnaire

Créez un dictionnaire en utilisant le defaultdict du module collections, où les clés sont les types et les valeurs sont des listes de valeurs :

<code class="python">from collections import defaultdict

res = defaultdict(list)
for v, k in input:
    res[k].append(v)</code>

Étape 2 : Convertir le dictionnaire au format souhaité

Convertir le dictionnaire créé en une liste de dictionnaires au format souhaité :

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

Considérations supplémentaires :

  • Pour conserver l'ordre original des clés dans les versions Python antérieures à 3.7, utilisez le OrderedDict du module collections.
  • Pour les versions Python 3.7 et ci-dessus, un dictionnaire régulier maintient l'ordre d'insertion.

Approche alternative utilisant **itertools.groupby()** :

Une approche alternative consiste à utiliser la fonction itertools.groupby, mais nécessite que les données d'entrée soient triées terlebih dahulu.

<code class="python">import operator as itemgetter
import itertools

sorted_input = sorted(input, key=itemgetter(1))
groups = itertools.groupby(sorted_input, key=itemgetter(1))
result = [{'type': k, 'items':[x[0] for x in v]} for k, v in groups]</code>

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