首页 > 解决方案 > 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] 进行排序不起作用!

命令有什么问题?

标签: pythonlistsortingalphabetical-sort

解决方案


它将大写字母排在小写字母之前。你可以试试:

sorted(L,key=lambda x:x[2].upper())

推荐阅读