Python – 按第 K 个索引元素对元组进行分组
有时,在处理Python记录时,我们可能会遇到一个问题,即我们需要按相似的第 K 个索引元素对元组的元素进行分组。这种问题可以在Web开发领域有应用。让我们讨论一下可以执行此任务的特定方式。
Input : test_list = [(4, 5), (3, 2), (2, 2), (1, 2), (5, 5)], K = 0
Output : [((1, 2), ), ((2, 2), ), ((3, 2), ), ((4, 5), ), ((5, 5), )]
Input : test_list = [(4, 5), (3, 2), (2, 2)], K = 1
Output : [((2, 2), (3, 2)), ((4, 5), )]
方法:使用groupby() + itemegetter()
+ 生成器表达式
上述功能的组合可以用来解决这个问题。在此,我们执行对使用 itemgetter 提取的第 K 个索引中的元素进行分组的任务,并且生成器表达式用于将整个逻辑绑定在一起。
# Python3 code to demonstrate working of
# Group Tuples by Kth Index Element
# Using groupby() + itemegetter() + generator expression
from operator import itemgetter
from itertools import groupby
# initializing lists
test_list = [(4, 5), (3, 2), (2, 2), (1, 2), (5, 5)]
# printing original list
print("The original list is : " + str(test_list))
# initializing K
K = 1
# Group Tuples by Kth Index Element
# Using groupby() + itemegetter() + generator expression
test_list.sort()
res = list(tuple(sub) for idx, sub in groupby(test_list, key = itemgetter(K)))
# printing result
print("Tuples after grouping : " + str(res))
输出 :
The original list is : [(4, 5), (3, 2), (2, 2), (1, 2), (5, 5)]
Tuples after grouping : [((1, 2), (2, 2), (3, 2)), ((4, 5), (5, 5))]