1

そのため、現在、重要度に関するデータを含む列に基づいて並べ替えている Excel スプレッドシートから取得した 2D 配列のデータがあります。

#rows contains my data that I'm sorting, it's a 2D array
searchdict = dict(Critical=1, High=2, Medium=3, Low=4)
rows.sort(key=lambda row: searchdict.get(row[11], 5))

その列が同点の場合、別の列に基づいて並べ替えたいのですが、これにアプローチする方法を知っている人はいますか? 助けてくれてありがとう。

参考までに: もう一方の列には数値データが含まれています

4

3 に答える 3

7

キーでタプルを使用します。これは、一般に、2 つの並べ替えを続けて実行するよりも「pythonic」であると見なされるメソッドです。

key=lambda row: (searchdict.get(row[11], 5), row[other_column]))
于 2013-05-31T20:24:07.560 に答える
1

最良のオプションは、python のタプル順序付けで key を使用することです。

#rows contains my data that I'm sorting, it's a 2D array
searchdict = dict(Critical=1, High=2, Medium=3, Low=4)
rows.sort(key=lambda row: (searchdict.get(row[11], 5), searchdict.get(row[<secondary column index here>], 5)))

これは、比較時にタプルの左端の要素がより重要であると見なされるという事実に基づいています。

>>> (6, 5) > (5, 6)
True
>>> (6, 5) > (6, 4)
True
>>> (6, 5) > (6, 6)
False
>>> (2, 1, 1) > (1, 1000, 1000)
True 
于 2013-05-31T20:28:44.607 に答える
0

ソート キー関数からの戻り値としてタプルを使用します。

rows.sort(key=lambda row: (searchdict.get(row[11], 5), row[17]))

Python は、インデックス 1 のアイテムよりもインデックス 0 のアイテムを最初にソートします。

于 2013-05-31T20:28:35.227 に答える