所以我创建了这个元组列表,其中每个元组由一个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()
答案 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
。