Skip to main content
 首页 » 编程设计

python之嵌套元组列表的高级排序标准

2025年05月04日15虾米哥

我有以下形式的嵌套元组列表:

[(a, (b, c)), ...] 

现在我想选择最大化 a 同时最小化 b 和 c 的元素。例如在

[(7, (5, 1)), (7, (4, 1)), (6, (3, 1))] 

获胜者应该是

(7, (4, 1)) 

感谢任何帮助。

请您参考如下方法:

根据我的理解,您想按 a 递减排序,然后按 b 升序排序,然后按 c 排序。如果那是对的,你可以这样做:

>>> l=[(7, (5, 1)), (7, (4, 1)), (6, (3, 2)), (6, (3, 1))] 
>>> sorted(l, key = lambda x: (-x[0], x[1])) 
[(7, (4, 1)), (7, (5, 1)), (6, (3, 1)), (6, (3, 2))] 

选择“获胜者”就像选择第一个元素一样简单。

如果 b 和 c 应该相加,在我的例子中它只是 sum(x[1]) 而不是 x[1]。

我的关键函数返回一个元组,因为 Python 正确地对包含多个元素的元组进行了排序:

>>> sorted([(1,2), (1,1), (1,-1), (0,5)]) 
[(0, 5), (1, -1), (1, 1), (1, 2)]