无法在python中对列表进行排序

时间:2017-05-18 11:54:26

标签: python

我尝试按如下方式对列表进行排序和反转:

train_eigen_pairs = [(np.abs(train_eigen_vals[i]),train_eigen_vec[:,i]) for i in range(len(train_eigen_vals))]
train_eigen_pairs.sort(reverse=True)
# Also tried :
reversed(sorted(train_eigen_pairs))
# and 
reversed(train_eigen_pairs.sort()) 

对于所有三种变体,我收到以下错误消息:

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

更新

重试后,我认为解决问题的方法是b,根据第一列对元组进行排序: 这是我尝试过的,但排序时间太长了。

sorted( train_eigen_pairs,key=lamda train_eignen_pairs: train_eigen_pairs[0], reverse=True) 

显然我错过了一些东西,因为它崩溃了IDE。第一列包含浮点值,第二列包含浮点值。

train_eigen_pairs[0][0]  is a float 
train_eigen_pairs[0][1]  is a complex vector

我知道如何解决这个问题? 提前谢谢!

1 个答案:

答案 0 :(得分:0)

在尝试了多个变种之后,这是一个有效的变种,我希望它可以帮助那些人:

train_eigen_pairs.sort(key=lambda x:x[0],reverse=True)