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')]