[英]Sort a list of tuples in Python where the tuples are list
这里几乎是一个类似的问题问在这里,但我的问题是稍有不同。 假设我有流动清单:
my_list = [('a', [0.2, 0.28, 0.3]), ('b', [-0.09, 0.37, 0.4])]
我试图根据元组的第二个元素(即 0.28 和 0.37 降序)对这个列表进行排序。 这是我到目前为止所拥有的,这是不对的。
import operator
my_list.sort(key = operator.itemgetter(1), reverse = True)
print(my_list)
[('a', [0.2, 0.28, 0.3]), ('b', [-0.09, 0.37, 0.4])]
我可以想到一种效率不高的方法,但我正在处理一个大型数据集并试图尽可能高效。 谢谢
你可以做:
my_list.sort(key=lambda x: x[1][1], reverse=True)
你为什么得到你的输出?
operator.itemgetter(1)
只是作为列表的每个元组的第二个元素,而不是该列表的第二个元素。 您将错误的key
传递给sort
功能。
您必须像上面的代码一样索引两次。 第一个索引以获取元组内的列表,然后索引列表以获取列表的第二个元素。
例如,列表[0.2, 0.28, 0.3]
是您要排序的顶层元组('a', [0.2, 0.28, 0.3])
元素 1。 在0.28
,你要根据排序是该元素1; 所以你想根据对数据的索引进行排序,比如[1][1]
。 operator.itemgetter
不会像这样执行多个索引步骤,但您可以手动定义它:
my_list.sort(key=lambda element:element[1][1], reverse=True)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.