我有一个必须排序的数据列表,遗憾的是这些对象的命名方案不是很一致。数据是一个字符串列表,这些字符串通常是实数,但有时末尾有一个字母。此列表中可接受值的一些示例如下所示:
# this is how it should be sorted
['1', '1.1', '1.2', '2', '2.1A', '2.1B', '2.2A', '101.1', '101.2']
由于这些在数据库中,我的第一个想法是使用以下 django 方法返回排序后的结果,但它返回如下。
#took out unneeded code
choices = [l.number for l in Locker.objects.extra(
select={'asnumber': 'CAST(number as BYTEA)'}).order_by('asnumber')]
print choices
==> ['1', '1.1', '101.1', '101.2', '2', '2.1A', '2.1B', '2.2A']
遗憾的是,它无法按应有的方式对其进行排序。所以我的新计划是编写一个可以与 pythonsorted
方法一起使用的方法,但我仍然不确定如何编写这个。我需要找到一种按字符串的实数部分排序的方法,然后作为辅助排序,按末尾附加的字母排序。
关于去哪里的任何建议?