我想以下列方式对包含三列的2D数组进行排序:
示例:
[[6, 0, "Hello"],
[4, 1, "Jane"],
[3, 0, "Text"],
[4, 1, "Bob"]]
按重要性排列的列是:1,0,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))
,但它只适用于一列。
我不知道如何继续这个。请帮忙!
答案 0 :(得分: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')