假设我有以下列表
['foo', '333', 32.3]
['bar', 4.0]
['baz', '555', '2232', -1.9]
我希望能够通过最后一个元素(float)
对它进行排序['baz', '555', '2232', -1.9]
['bar', 4.0]
['foo', '333', 32.3]
按升序排列
count_array = np.array([('foo', '333', 32.3),('bar', 4.0),('baz', '555', '2232', -1.9)], dtype = np.object)
idx = np.argsort(count_array[:, 1])
print(count_array[idx])
我希望能够通过比较最后一个元素来对二维列表进行排序。仅当子列表长度相同时,此代码才有效。
如何让它适用于可变长度子列表?
问题在于这一行idx = np.argsort(count_array[:, 1])
答案 0 :(得分:2)
我只想在这里使用普通lists
,当你创建一个numpy.array
包含不同长度的子列表(或array
中的不同数据类型)时,你得到{{1} array
类型,缺少许多有用的object
功能,并且很难实现。
numpy
结果:
x = [['foo', '333', 32.3],
['bar', 4.0],
['baz', '555', '2232', -1.9]]
result = sorted(x, key=lambda k : k[-1], reverse=True)