我想用Python列出一个目录。我的目录只有名称为
的文件A1, A2, A3,..., A10, A11,..., B1,B2, ..., B10, B11 ...
问题是,当我按字母顺序尝试用Python命令时:
listQuery = os.listdir('C:\\query\\')
listQuery.sort()
我收到了以下命令:
A1, A10, A11, ... ,A2 ...
所以我的问题是我怎么能先按字母顺序排序,然后用数字命名呢
答案 0 :(得分:1)
制作排序键功能,例如:
def my_order(value):
return (value[0], int(value[1:]))
然后用它来对你的清单进行排序:
listQuery.sort(key=my_order)
这会对列表中的每个值调用my_order
函数,然后根据这些新计算的值对列表进行排序。这也被称为“装饰 - 排序 - 未装饰”(“DSU”)或“施瓦茨变换”。
在这种情况下,它会创建一个元组列表,如('A', 2)
,('A', 11)
等.Python根据各个值对元组进行排序。如果两个元组具有相同的第一个值(如'A'
),则会转到下一对值(此处为2
和11
)。因为这两个都是整数,所以它会用数字排序。它使用该排序对原始列表进行排序。