📌  相关文章
📜  Python|使用相同的第一个值对列表中的元组进行分组

📅  最后修改于: 2022-05-13 01:55:23.384000             🧑  作者: Mango

Python|使用相同的第一个值对列表中的元组进行分组

给定一个元组列表,任务是打印另一个包含相同第一个元素的元组的列表。以下是实现上述任务的一些方法。

例子:

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

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

方法#1:使用extend

# 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)
输出:
Initial list of tuple is : [('x', 'y'), ('x', 'z'), ('w', 't')]
List showing common first element [('w', 't'), ('x', 'y', 'z')]

方法#2:使用defaultdict

# 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)
输出:
Initial list of tuple is : [('p', 'q'), ('p', 'r'), ('p', 's'), ('m', 't')]
List showing common first element [('m', 't'), ('p', 'q', 'r', 's')]