好的 - 在这一段时间里一直在努力。我刚开始学习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是最快的,但我无法让它工作......
答案 0 :(得分:2)
你非常接近。您在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)]
>>>