繁体   English   中英

在 Python 中对元组列表进行排序,其中元组是列表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM