python - 在 Python 中使用模板文字对 2D 列表进行排序
问题描述
我有一个名为的二维列表data
data = [['ABC', 12, 3, 100],
['DEF', 10, 5, 200],
['GHI', 13, 3, 1000]]
和2个随机数n1
和n2
(不限于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]]
我期待着您的帮助。提前致谢
解决方案
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]]
这适用于任意数量的索引。
推荐阅读
- python - asyncio任务完成后添加回调,而不是asyncio.as_completed?
- php - 如何将 Manticore 搜索连接到 Apache Nutch 爬网结果文件夹?
- python - 错误:未找到雪花连接器-python==2.5.0 的匹配分布
- reactjs - 想要在“react-native-image-layout”中的图像模式上显示一个菜单栏,以提供删除等图像的选项
- c++ - 如何在 C++ 中记录屏幕时间?
- javascript - 更新 Mongoose 检索对象中的现有嵌套属性
- java - 取消刷新尝试:org.springframework.beans.factory.BeanDefinitionStoreException:无法解析配置类
- android - 您如何让订阅者订阅 kotlin sharedflow 并行运行操作?
- linux - 如何将 Linux 驱动程序与硬件设备匹配
- asp.net - ASP.NET 复选框在首次加载时不会触发检查更改事件