python 中的小数排序

Sorting decimals in python

我有一个列表

    list1 = ["1.10","1.1","1.23","2.20","2.2"]

我用了

    list1.sort(key=float)

给出了输出

   list1 = ["1.10","1.1","1.23","2.20","2.2"]

但是我正在寻找这个:

   list1 = ["1.1","1.10","1.23","2.2","2.20"]

有什么想法可以做到这一点吗?

这不是解决方案,但我已经尽我所能开始了:

string1 = ["1.10","1.1","1.23","2.2","2.20"]
for x in string1:
    if x.find('0') > 0:
        place = string1.index(x)
        string1.remove(x)
        string1.insert(place+1, x)
print (string1)

它现在遇到的唯一问题是随着列表的迭代,它会一次又一次地遍历相同的值,将它们向前推。也许一个功能可以防止这种情况发生。

如果你想考虑字符串的长度,你必须将它告诉 key 函数。我们必须构造一个键,其中首先考虑 float 值,然后考虑字符串的长度。

最简单的方法是用这两个值创建一个元组。

>>> list1 = ["1.10","1.1","1.23","2.20","2.2"]
>>> list1.sort(key=lambda x: (float(x), len(x)))
>>> list1
['1.1', '1.10', '1.23', '2.2', '2.20']