排序数字和数组列表?

时间:2015-12-13 01:45:19

标签: python arrays list sorting

所以我创建了这个元组列表,其中每个元组由一个int和一个数组组成。

a = ((1, array([1,2,3])), (4, array([1,3,3])), (2, array([1,3,2]))) 

我想对列表进行排序,以便按增加的顺序对列表进行排序。

a = ((1, array([1,2,3])), (2, array([1,3,2])), (4, array([1,3,3]))) 

我尝试使用

a.sort() 

从我正在阅读的文章中应该按照我想要的方式对其进行排序,但它返回了错误

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

2 个答案:

答案 0 :(得分:1)

明确指定key函数参数,以便只显示第一项;使int对象用作排序键:

>>> a = [(1, array([1,2,3])), (2, array([1,3,2])), (4, array([1,3,3]))]
>>> a.sort(key=lambda x: x[0])
>>> a
[(1, array([1, 2, 3])), (2, array([1, 3, 2])), (4, array([1, 3, 3]))]

答案 1 :(得分:1)

您可以告诉sorted使用lambda表达式按第一个元素排序:

>>> from numpy import array
>>> a = ((1, array([1,2,3])), (4, array([1,3,3])), (2, array([1,3,2])))
>>> a = tuple(sorted(a, key=lambda x: x[0]))
>>> a
((1, array([1, 2, 3])), (2, array([1, 3, 2])), (4, array([1, 3, 3]))

请注意a是一个元组,因此是不可变的。这就是为什么我将sorted的返回值转换为元组并重新分配a