根据操作结果(除法)对元组列表进行排序

时间:2016-11-14 04:06:48

标签: python sorting tuples

好的 - 在这一段时间里一直在努力。我刚开始学习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是最快的,但我无法让它工作......

1 个答案:

答案 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)]
>>>