Ant*_*ton 2 python tuples list
假设我有这个元组列表:
[(30, 'B'), (50, 'B'), (40, 'C'), (10, 'A'), (80, 'A'), (5, 'A')]
Run Code Online (Sandbox Code Playgroud)
我需要按元组的第二个元素按降序对元组进行排序,但条件是具有相同第二个元素的所有元组都彼此相邻。
所以,它应该看起来像
[(80, 'A'), (10, 'A'), (5, 'A'), (50, 'B'), (30, 'B'), (40, 'C')]
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
您想按第二个元素排序,然后是第一个元素的负数:
>>> values = [(30, 'B'), (50, 'B'), (40, 'C'), (10, 'A'), (80, 'A'), (5, 'A')]
>>> sorted(values, key=lambda value: (value[1], -value[0]))
[(80, 'A'), (10, 'A'), (5, 'A'), (50, 'B'), (30, 'B'), (40, 'C')]
Run Code Online (Sandbox Code Playgroud)
key的参数必须sorted是一个函数,它将每个值转换为您想要比较的值。
我传入一个 lambda 函数,该函数接受值(a tuple,例如(40, 'C')),然后返回('C', -40)。然后,Python 比较第一个反转值 ,'C'如果匹配,则比较第二个值-40。