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

2024-03-29 12:03:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个嵌套元组的列表:

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

现在我想选择一个元素,它可以同时最小化bc。例如

^{pr2}$

胜利者应该是

(7, (4, 1))

感谢任何帮助。在


Tags: 元素列表元组pr2胜利者
2条回答
>>> max(lst, key=lambda x: (x[0], -x[1][0], -x[1][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]),而不是{}。在

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

^{pr2}$

相关问题 更多 >