python - Python按字母顺序排序二维列表不起作用
问题描述
我有一个包含 4 列的列表:
L = [[0, '0000000', 'Hashfunction.jpg', 258883, '.jpg'],
[1, '0000001', 'a_test_grey.jpg', 24186, '.jpg'],
[2, '0000002', 'b_test_grey.jpg', 4256, '.jpg'],
[3, '0000003', 'IMG_20210323_062719.jpg', 6704108, '.jpg']]
这个列表我必须根据第 3 列的文件名按字母顺序排列。我尝试了不同的方法,但我仍然没有成功。
方法一:
sorted(L,key=lambda x:x[2])
结果是:
[[0, '0000000', 'Hashfunction.jpg', 258883, '.jpg'],
[3, '0000003', 'IMG_20210323_062719.jpg', 6704108, '.jpg'],
[1, '0000001', 'a_test_grey.jpg', 24186, '.jpg'],
[2, '0000002', 'b_test_grey.jpg', 4256, '.jpg']]
=> 这是不正确的!
方法二:
sorted(L, key=operator.itemgetter(2))
结果是:
[[0, '0000000', 'Hashfunction.jpg', 258883, '.jpg'],
[3, '0000003', 'IMG_20210323_062719.jpg', 6704108, '.jpg'],
[1, '0000001', 'a_test_grey.jpg', 24186, '.jpg'],
[2, '0000002', 'b_test_grey.jpg', 4256, '.jpg']]
=> 这也不正确!通常名称为“a_test_grey.jpg”的文件应该是结果中的第一个!
当我更改排序参数时,命令中的列索引从 2 到 0、1、3 排序根据列索引正常工作。但是按字母顺序对列 [2] 进行排序不起作用!
命令有什么问题?
解决方案
它将大写字母排在小写字母之前。你可以试试:
sorted(L,key=lambda x:x[2].upper())
推荐阅读
- python - 尝试用特定值填充整行/列时出现形状不匹配值错误
- android - 每当我添加 Firebase 性能监控时,应用程序都无法安装
- .net - RabbitMQ .Net 核心
- reactjs - 如何将道具传递给 React Big Calendar 自定义组件?
- sql - 有没有办法检查一个表是否包含答案表中某一列中一个特定 ID 的所有记录?
- html - 边界半径 50% 和 100% 有什么区别?
- css - 使用Angular Material从mat-card-content中选择mat-radio按钮时如何为mat-card添加背景?
- python - KivyMD App ScrollView 超出边界
- javascript - 如何获取角管道中过滤记录的计数
- php - 如何为 Laravel 模块架构应用 CRUD 生成器?