首页 > 解决方案 > 在 Python 中使用模板文字对 2D 列表进行排序

问题描述

我有一个名为的二维列表data

data = [['ABC', 12, 3, 100],
       ['DEF', 10, 5, 200],
       ['GHI', 13, 3, 1000]]

和2个随机数n1n2(不限于2个数字)。每当我运行我的程序时,n1 和 n2 将随机设置在 [0-3] 之间,因为数据有 4 列在 [0-3] 之间索引。之后,应根据 n1 和 n2 指向的列对数据进行排序。

比方说

n1= 2
n2= 3

因此,列表现在应该首先按第二列排序,如果第二列中的值相同,则应根据第三列进行排序,依此类推,如下所示

[['ABC', 12, 3, 100],
['GHI', 13, 3, 1000],
['DEF', 10, 5, 200]]

我期待着您的帮助。提前致谢

标签: pythonarrayspython-3.xlistsorting

解决方案


利用operator.itemgetter

from operator import itemgetter


data = [['ABC', 12, 3, 100],
       ['DEF', 10, 5, 200],
       ['GHI', 13, 3, 1000]]


indices = [2, 3]

res = sorted(data, key=itemgetter(*indices))
print(res)

输出

[['ABC', 12, 3, 100], ['GHI', 13, 3, 1000], ['DEF', 10, 5, 200]]

这适用于任意数量的索引。


推荐阅读