好的-对此进行了一段时间的努力。我刚刚开始学习Python,因此非常新。

我有一个元组列表,需要按每个元组中值的比率进行排序。

输入:

L = [(1,3), (1,7), (4,8)]


返回排序列表:

L = [(1,7), (1,3), (4,8)]


它需要使用sort和自定义键进行排序。我见过人们使用itemgetter,但我也无法使用该版本。

到目前为止,我的尝试:

sorted(L, key = lambda x: [(i[0]/float(i[1])) for i in x])


我一直以此为指导:
How to sort (list/tuple) of lists/tuples?

看来使用itemgetter最快,但是我也无法使用它。

最佳答案

你很亲近您在lambda函数中不需要for循环。

>>> L = [(1,3), (1,7), (4,8)]
>>> sorted(L, key=lambda i: i[0]/float(i[1])) # no need for the for loop
[(1, 7), (1, 3), (4, 8)]
>>>


您还可以像这样使用operator.itemgetter()

>>> L = [(1,3), (1,7), (4,8)]
>>> from operator import itemgetter
>>> ig = itemgetter(0), itemgetter(1)
>>> sorted(L, key= lambda i: ig[0](i)/float(ig[1](i)))
[(1, 7), (1, 3), (4, 8)]
>>>

10-08 01:58