【发布时间】:2015-05-05 03:16:31
【问题描述】:
我有一个清单
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"]
有什么想法可以做到这一点吗?
【问题讨论】:
-
我使用了 list1.sort(key=int) 来提供输出 你真的吗?您使用的是什么实现和版本的 Python?我尝试得到的唯一“输出”是
ValueError。 -
第一:你需要
key=float。第二:Python使用稳定排序。所以1.10等于1.1将始终按此顺序出现,因为原始顺序。一个简单的list1.sort()将为这个单个列表产生这种行为,因为它会比较字符串,而不是数字 -
您确实意识到 1.10 == 1.1 和 2.20 == 2.2,这些数字对完全相同相同,您没有理由期望它们以一种方式排序或其他...
-
您可能需要
key=decimal.Decimal而不是key=float。对这些示例没有影响,但对您的真实数据可能会有影响。 -
@VaibhavMule 不,这与我的问题不同