我不知道它是否可能,但我有一个由许多值组成的列表,如
list = ["0.75543 blue", "0.5454 red", "0.113424 blue", "0.9993233 red" and so on] and so on.
换句话说,我的值介于0和1之间,两个标签为蓝色和红色。当我单击array.sort()
时,它没有正确排序它们,因为列表中的值是字符串。我希望能够仅根据值正确地对列表进行排序(独立于标签)。这可能吗?
答案 0 :(得分:6)
是的,您可以根据字符串第一部分中的数值进行排序。只需传递sort
一个从每个字符串中提取数字的键。
<强>演示强>
>>> L = ["0.75543 blue", "0.5454 red", "0.113424 blue", "0.9993233 red"]
>>> L.sort(key=lambda l: float(l.split()[0]))
>>> L
['0.113424 blue', '0.5454 red', '0.75543 blue', '0.9993233 red']
此外,根据您正在做的事情,您可能会发现将值标签对存储为元组更容易。然后,排序更容易(并且可以说更直观):
>>> L = [(0.75543, "blue"), (0.5454, "red"), (0.113424, "blue"), (0.9993233, "red")]
>>> L.sort(key=lambda t: t[0])
>>> L
[(0.113424, 'blue'), (0.5454, 'red'), (0.75543, 'blue'), (0.9993233, 'red')]
最后,请不要将您的列表命名为list
; list
是Python中的内置类型和函数(请参阅@ 2rs2ts的评论)。