Python | Agrupar tuplas en la lista con el mismo primer valor

Dada una lista de tuplas, la tarea es imprimir otra lista que contenga la tupla del mismo primer elemento. A continuación se presentan algunas formas de lograr las tareas anteriores.

Ejemplo:

Input : [('x', 'y'), ('x', 'z'), ('w', 't')]

Output: [('w', 't'), ('x', 'y', 'z')]

Método #1: Usarextend

# Python code to find common 
# first element in list of tuple
  
# Function to solve the task
def find(Input):
    out = {}
    for elem in Input:
        try:
            out[elem[0]].extend(elem[1:])
        except KeyError:
            out[elem[0]] = list(elem)
    return [tuple(values) for values in out.values()]
  
# List initialization
Input = [('x', 'y'), ('x', 'z'), ('w', 't')]
  
# Calling function
Output = (find(Input))
  
# Printing
print("Initial list of tuple is :", Input)
print("List showing common first element", Output)
Producción:

Initial list of tuple is : [('x', 'y'), ('x', 'z'), ('w', 't')]
List showing common first element [('w', 't'), ('x', 'y', 'z')]

Método #2: Usardefaultdict

# Python code to find common first
# element in list of tuple
  
# Importing
from collections import defaultdict
  
# Function to solve the task
def find(pairs):
    mapp = defaultdict(list)
    for x, y in pairs:
        mapp[x].append(y)
    return [(x, *y) for x, y in mapp.items()]
  
# Input list initialization
Input = [('p', 'q'), ('p', 'r'),
         ('p', 's'), ('m', 't')]
  
# calling function
Output = find(Input)
  
# Printing
print("Initial list of tuple is :", Input)
print("List showing common first element", Output)
Producción:

Initial list of tuple is : [('p', 'q'), ('p', 'r'), ('p', 's'), ('m', 't')]
List showing common first element [('m', 't'), ('p', 'q', 'r', 's')]

Publicación traducida automáticamente

Artículo escrito por everythingispossible y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *