私はリストソート2Dリストパイソン
[1, 0.23]
[2, 0.39]
[4, 0.31]
[5, 0.27]
の種類を、次のしている私は2番目の列の降順でこれをソートしたいです。私はPythonで 'sorted'関数を試しました。しかし、私に 'TypeError'を与えます: 'float'オブジェクトはサブスクライブできません。 この問題を解決するのを手伝ってください。
私はリストソート2Dリストパイソン
[1, 0.23]
[2, 0.39]
[4, 0.31]
[5, 0.27]
の種類を、次のしている私は2番目の列の降順でこれをソートしたいです。私はPythonで 'sorted'関数を試しました。しかし、私に 'TypeError'を与えます: 'float'オブジェクトはサブスクライブできません。 この問題を解決するのを手伝ってください。
使いやすさと明確にするためoperator.itemgetter()
を使用し、2列目のリストのリストをソートするに:
from operator import itemgetter
outputlist = sorted(inputlist, key=itemgetter(1), reverse=True)
か、その場でソートする:
from operator import itemgetter
inputlist.sort(key=itemgetter(1), reverse=True)
itemgetter()
少し速くよりそのタスクにはlambda
を使用します。
デモ:
>>> from operator import itemgetter
>>> inputlist = [
... [1, 0.23],
... [2, 0.39],
... [4, 0.31],
... [5, 0.27],
... ]
>>> sorted(inputlist, key=itemgetter(1), reverse=True)
[[2, 0.39], [4, 0.31], [5, 0.27], [1, 0.23]]
あなたはポイントが直接あなたinputlistで値浮いていた場合にのみ、あなたの例外を参照してくださいね。
>>> inputlist.append(4.2)
>>> inputlist
[[1, 0.23], [2, 0.39], [4, 0.31], [5, 0.27], 4.2]
>>> sorted(inputlist, key=itemgetter(1), reverse=True)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'float' object is not subscriptable
(Pythonの3のために、Pythonの2のエラーメッセージがありますわずかに異なり、代わりにTypeError: 'float' object has no attribute '__getitem__'
になります)。
これは、外部リストのすべての要素にitergetter(1)
呼び出しが適用されていますが、現在追加されている浮動小数点値ではなく、ネストされた順序付きシーケンスでのみ機能するためです。
私はこれを試しましたが、私の2番目の列が浮動小数点型であるため、 'TypeError'が返されます: 'float'オブジェクトはunsubscriptableです –
@ChinthakaNadunRatnaweera:いいえ、あなたのリストはネストされていません。外側のリストで*直接参照されている浮動小数値*があります。あなたのリストを印刷し、それをあなたの質問にコピーしてください。 –
あなたはラムダを使用することができます。
>>> li=[[1, 0.23],
... [2, 0.39],
... [4, 0.31],
... [5, 0.27]]
>>> sorted(li,key=lambda l:l[1], reverse=True)
[[2, 0.39], [4, 0.31], [5, 0.27], [1, 0.23]]
またはその他の方法:
>>> sorted(li,key=lambda l:l[1])
[[1, 0.23], [5, 0.27], [4, 0.31], [2, 0.39]]
私は申し訳ありませんが、それはリストではありません。これは改行を含む数字のシーケンスですが、Pythonの構造はありません。あなたのために失敗した実際のコードとリストの表現を投稿してください。 –
これで、一連のPythonリストが作成されました。外側のリストはありますか? –
Pythonで2Dリストをソートするための#1 Google検索結果であるため、話題にならないことは明らかです。最高の答えは15件です。 – JeffThompson