我有一个问题(在Project Euler问题中遇到),因为我有一个元组列表列表,例如。
[...
[(-119, 359), (668, -609), (-358, -494)],
[(440, 929), (968, 214), (760, -857)],
[(-700, 785), (838, 29), (-216, 411)],
[(-770, -458), (-325, -53), (-505, 633)],
...]
我想要做的是用具有最小第一个值的元组对它们进行排序,但如果它们相等,则比较第二个值并按最小值排序。我一直在寻找,似乎无法找到办法。我发现的唯一的东西是旧的python 2.x版本的sort,它给出了一个cmp参数。
非常感谢任何帮助,
此致
Ybrad
编辑:
我刚刚意识到以上措辞略有错误。我想要做的是对每个子列表中的元组进行排序,而不是整个列表列表。
答案 0 :(得分:1)
你可以很容易地做到:
a = [sorted(i) for i in a]
>>> print a
[[(-358, -494), (-119, 359), (668, -609)],
[(440, 929), (760, -857), (968, 214)],
[(-700, 785), (-216, 411), (838, 29)],
[(-770, -458), (-505, 633), (-325, -53)]]
对于第二个请求,您可以这样做:
a = [sorted(i, key=lambda i: (i[0], -i[1])) for i in a]