我有以下形式的嵌套元组列表:
[(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)]
