Maison > développement back-end > Tutoriel Python > Python - Regrouper le premier élément de la liste des tuples par le deuxième élément

Python - Regrouper le premier élément de la liste des tuples par le deuxième élément

王林
Libérer: 2023-09-14 15:49:02
avant
1384 Les gens l'ont consulté

Python - 将元组列表中的第一个元素按第二个元素进行分组

En Python, vous pouvez utiliser diverses méthodes pour regrouper des éléments dans une liste de tuples en fonction de la valeur du deuxième élément, par exemple en utilisant un dictionnaire ou en utilisant la méthode itertools.groupby() et en utilisant defaultdict à partir d'une collection. Le regroupement du premier élément par le deuxième élément dans une liste de tuples signifie que les tuples avec le même deuxième élément peuvent être regroupés en un seul groupe d'éléments. Dans cet article, nous verrons comment implémenter ces méthodes afin de pouvoir facilement regrouper le premier élément en fonction du deuxième élément de la liste des tuples.

Méthode 1 : Utiliser un dictionnaire

Cette méthode consiste à utiliser un dictionnaire pour regrouper des éléments. Cette méthode utilise des paires clé-valeur d'un dictionnaire pour stocker le premier élément et utilise le deuxième élément comme clé.

Grammaire

dict_name[key]
Copier après la connexion

Ici, la notation entre crochets est utilisée pour attribuer une valeur à une clé spécifique dans le dictionnaire. Si la clé existe déjà, la valeur est ajoutée à la liste associée à la clé ; sinon, une nouvelle paire clé-valeur est créée.

Exemple

Dans l'exemple ci-dessous, nous initialisons d'abord un dictionnaire vide grouped_data. Ensuite, pour chaque tuple de la liste de données, nous extrayons le deuxième élément comme clé (item[1]) et le premier élément comme valeur (item[0]). Nous vérifions ensuite si la clé existe déjà dans grouped_data. Si tel est le cas, nous ajoutons la valeur à la liste existante de valeurs associées à cette clé. Sinon, nous créons une nouvelle paire clé-valeur où key est le deuxième élément et value est une nouvelle liste contenant le premier élément. Enfin, nous parcourons le dictionnaire grouped_data et imprimons chaque clé et sa valeur correspondante.

# Sample tuple list
data = [('Apple', 'Fruit'), ('Banana', 'Fruit'), ('Carrot', 'Vegetable'), ('Potato', 'Vegetable')]

# Grouping elements using a dictionary
grouped_data = {}
for item in data:
    key = item[1]
    value = item[0]
    if key in grouped_data:
        grouped_data[key].append(value)
    else:
        grouped_data[key] = [value]

# Printing the grouped data
for key, values in grouped_data.items():
    print(key, ":", values)
Copier après la connexion

Sortie

Fruit : ['Apple', 'Banana']
Vegetable : ['Carrot', 'Potato']
Copier après la connexion
Copier après la connexion
Copier après la connexion

Méthode 2 : utilisez itertools.groupby()

La fonction

itertools.groupby() fournit un autre moyen efficace de regrouper des éléments en fonction de critères spécifiques. Cette méthode nécessite que les données d'entrée soient triées en fonction du deuxième élément.

Grammaire

   groups[key]
Copier après la connexion

Ici, la fonction groupby() du module itertools itère l'objet groupby. Cette fonction renvoie la clé et un ensemble d'éléments consécutifs avec la même valeur. Créez ensuite des paires clé-valeur dans le dictionnaire des groupes à l'aide de key et group, où key est la valeur unique et value est la liste des éléments groupés.

Exemple

Dans l'exemple ci-dessous, nous importons la fonction groupby() du module itertools. La fonction groupby() nécessite que les données d'entrée soient triées en fonction de la clé de regroupement. Par conséquent, nous utilisons la fonction sorted() pour trier la liste de données et fournissons une fonction lambda comme argument clé pour spécifier le tri basé sur le deuxième élément (x[1]). Nous parcourons ensuite la sortie de la fonction groupby(), qui renvoie une clé et un itérateur d'éléments groupés. Pour chaque groupe, nous extrayons la clé et créons une liste du premier élément correspondant (item[0]).

from itertools import groupby

# Sample tuple list
data = [('Apple', 'Fruit'), ('Banana', 'Fruit'), ('Carrot', 'Vegetable'), ('Potato', 'Vegetable')]

# Sorting the data based on the second element
sorted_data = sorted(data, key=lambda x: x[1])

# Grouping elements using itertools.groupby()
grouped_data = {}
for key, group in groupby(sorted_data, key=lambda x: x[1]):
    grouped_data[key] = [item[0] for item in group]

# Printing the grouped data
for key, values in grouped_data.items():
    print(key, ":", values)
Copier après la connexion

Sortie

Fruit : ['Apple', 'Banana']
Vegetable : ['Carrot', 'Potato']
Copier après la connexion
Copier après la connexion
Copier après la connexion

Méthode 3 : Utiliser defaultdict de la collection

La classe defaultdict du module collections fournit un moyen pratique de regrouper des éléments dans une liste de tuples. Il crée automatiquement une nouvelle liste comme valeur par défaut pour chaque clé, simplifiant ainsi le processus de regroupement.

Grammaire

groups[item].append(item)
Copier après la connexion

Ici, la syntaxe utilise la fonction defaultdict() du module collections pour initialiser un objet defaultdict nommé groups dont la valeur par défaut est une liste vide. La deuxième ligne de code utilise la clé (élément) pour accéder à la liste associée à cette clé dans le dictionnaire des groupes et ajoute l'élément à la liste.

Exemple

Dans l'exemple ci-dessous, nous importons la classe defaultdict depuis le module collections. Lors de l'initialisation du dictionnaire grouped_data, nous utilisons defaultdict(list) pour définir la valeur par défaut sur une liste vide. Nous parcourons ensuite la liste de données, en extrayant le deuxième élément comme clé (item[1]) et le premier élément comme valeur (item[0]). En utilisant defaultdict, nous pouvons directement ajouter la valeur à la liste associée à cette clé.

from collections import defaultdict

# Sample tuple list
data = [('Apple', 'Fruit'), ('Banana', 'Fruit'), ('Carrot', 'Vegetable'), ('Potato', 'Vegetable')]

# Grouping elements using defaultdict
grouped_data = defaultdict(list)
for item in data:
    grouped_data[item[1]].append(item[0])

# Printing the grouped data
for key, values in grouped_data.items():
    print(key, ":", values)
Copier après la connexion

Sortie

Fruit : ['Apple', 'Banana']
Vegetable : ['Carrot', 'Potato']
Copier après la connexion
Copier après la connexion
Copier après la connexion

Conclusion

Dans cet article, nous avons expliqué comment regrouper les premier et deuxième éléments dans une liste de tuples en utilisant différentes méthodes en Python. En utilisant des dictionnaires, nous pouvons facilement stocker et accéder à des données groupées. La fonction itertools.groupby() fournit une solution efficace, mais nécessite le tri des données. De plus, la classe defaultdict simplifie le processus de regroupement en créant automatiquement des listes comme valeurs par défaut pour chaque clé.

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:tutorialspoint.com
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal