2017-07-01 3 views
0

使用して2次元配列のソート:Pythonの - 私は、次の方法で、3列の2次元配列のソートしたい各列

  • まず、配列を基に各番号をいずれかの列を通過し、ソート値に
  • 次に、「結び」がある場合、プログラムは別の列を使用して結び目を整理します。
  • 最後に、残りの列を使用して、まだ存在するすべての結びつきを整理します。

例:重要度の順に

[[6, 0, "Hello"], 
[4, 1, "Jane"], 
[3, 0, "Text"], 
[4, 1, "Bob"]] 

列がある:1、0、2。これは、我々は、その後、最初の、そして最後の最後の2列目を確認してください意味。

[[6, 0, "Hello"], 
[3, 0, "Text"], 
[4, 1, "Jane"], 
[4, 1, "Bob"]] 

は今、私たちは、最初の列を使用します。

[[3, 0, "Text"], 
[6, 0, "Hello"], 
[4, 1, "Jane"], 
[4, 1, "Bob"]] 

は最後に、私たちが最後の列を使用します。

[[3, 0, "Text"], 
[6, 0, "Hello"], 
[4, 1, "Bob"], 
[4, 1, "Jane"]] 

をただ一つの列に基づいて、それを並べ替えることが難しいことではありませんし、重複は無視してください。それはここに示されています:Sorting a 2D array using the second column C++。私はdata.sort(key=itemgetter(1))を試しましたが、それは1つの列に対してのみ機能しました。

これをどのように進めるかわかりません。助けてください!

答えて

1
from operator import itemgetter 

data = [[6, 0, "Hello"], 
     [4, 1, "Jane"], 
     [3, 0, "Text"], 
     [4, 1, "Bob"]] 

data.sort(key=itemgetter(1, 0, 2)) 

print(data) # [[3, 0, 'Text'], [6, 0, 'Hello'], [4, 1, 'Bob'], [4, 1, 'Jane']] 

理解するために:

key_function = itemgetter(1, 0, 2) 
print(key_function([6, 0, "Hello"])) # (0, 6, 'Hello') 
+0

感謝を!私はdata.sort(key = itemgetter(1、0、2))を試しましたが、複数のパラメータを取ることができるかどうかはわかりませんでした。 –

関連する問題