好的-对此进行了一段时间的努力。我刚刚开始学习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)]
>>>