У меня есть список файлов, каждый из которых назван в честь камеры. В Finder на Mac, если я отсортировать их по «Name» первые три в следующем порядке:Как отсортировать список в алфавитном порядке ИЗБРАННОЕ №
1D 5D 10D
Однако в другом приложении, тот же список файлов сортируется как это:
10D 1D 5D
Обратите внимание на 10D перемещается от нижней к верхней части списка. Я думаю, это связано с тем, что второе приложение предпочитает номера над буквами. Это похоже на то, что «0» - это номер, который имеет более высокое размещение, чем «D».
В Python я написал сценарий, который принимает папку с файлами и добавляет их в список. Но мне нужно, чтобы список сортировался так же, как и второе приложение, а не то, как их сортирует. Я думаю, что решение может иметь отношение к функции sorted()
и параметру key
, но помимо этого я не уверен, что делать.
Для тех из вас, кто хочет видеть код:
myList = ["1D", "5D", "10D"]
sorted(myList, key=theSolutionToMyProblem)
print myList
>>>["10D", "1D", "5D"]
Если я далеко, пожалуйста, скажите мне. Направьте меня в правильном направлении.
Связанный: http://stackoverflow.com/q/442429 –
Я не думаю, что это просто связанный, это точно такой же вопрос, за исключением ссылки на естественный порядок сортировки Finder, а не на Explorer. – abarnert
Если вы действительно не хотите _exactly_ того, что Finder делает на конкретном компьютере, на котором вы работаете, вплоть до наименьшего причуда, а не только естественной сортировки вообще ... в этом случае я могу написать ответ, используя 'PyObjC', чтобы вызвать тот же CoreFoundation функции, которую использует Finder. – abarnert