我有一个像这样的元组的列表
tupleList = [('A',1), ('B',1), ('B',2), ('B',3), ('C',1)]
我希望能够通过这个列表解析,让有相同的字母任何的元组,然后用较大的数字删除的那些,只保留一个具有最小数,所以我的输出将是:
('A',1), ('B',1), ('C',1)
你可以通过第二个元素使用qazxsw POI到组的元组开始。
然后,为了保持最低值,每个组可以使用itertools.groupby
,它允许您指定与您可以指定排序功能的min
英寸在这种情况下,你可以使用key
,它会发现在每一个元组的第二个元素中的最小值:
key = itemgetter(1)
产量
from itertools import groupby
from operator import itemgetter
tupleList = [('A',1), ('B',1), ('B',2), ('B',3), ('C',1)]
[min(v, key = itemgetter(1)) for k, v in groupby(tupleList, key = itemgetter(0))]
你基本上采取的每个元组在tupleList并将其与内─其他元组,如果他们有相同的字母,然后比较它们的值。取出一个用更大的价值:
[('A', 1), ('B', 1), ('C', 1)]