2

次のリストがあるとします

['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])

最後の要素を比較して 2 次元リストをソートできるようにしたいと考えています。このコードは、サブリストが同じ長さの場合にのみ機能します。

可変長のサブリストで機能させるにはどうすればよいですか?

問題はこの行ですidx = np.argsort(count_array[:, 1])

4

1 に答える 1

2

ここではプレーンを使用します。さまざまな長さ (または 内のさまざまなデータ型) のサブリストを持つを作成listsすると、多くの有用な機能が欠けており、実装することはほとんどありません。numpy.arrayarrayarrayobjectnumpy

x = [['foo', '333', 32.3],
     ['bar', 4.0],
     ['baz', '555', '2232',  -1.9]]

result = sorted(x, key=lambda k : k[-1], reverse=True)

結果:

>>> result
[['foo', '333', 32.3], ['bar', 4.0], ['baz', '555', '2232', -1.9]]
于 2013-11-07T04:06:47.057 に答える