並べ替える必要があるデータのリストがありますが、残念ながら、これらのオブジェクトの命名規則はあまり一貫していません。データは文字列のリストで、ほとんどの場合は実数ですが、末尾に文字が含まれることもあります。このリストで許容される値の例を次に示します。
# 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
メソッドで動作するメソッドを作成することですが、これを作成する方法がまだわかりません。文字列の実数部分でソートする方法を見つけてから、セカンダリソートとして、最後に追加された文字でソートする必要があります。
これでどこに行くべきかについて何かアドバイスはありますか?