下面列出的元组已经排序,在python中为“sorted”:
L = [("1","blaabal"),
("1.2","bbalab"),
("10","ejej"),
("11.1","aaua"),
("12.1","ehjej"),
("12.2 (c)", "ekeke"),
("12.2 (d)", "qwerty"),
("2.1","baala"),
("3","yuio"),
("4","poku"),
("5.2","qsdfg")]
我的问题是,正如你所注意到的,一开始它是好的,尽管在“12.2(d)”之后列表重新开始在“2.1”之后,我不知道如何解决这个问题。在
谢谢
有一个专门为您的案例制作的包^{} :
元组的第一个值是字符串,按字典顺序排序。如果您希望它们保持字符串,请使用
由于每个元组中的第一个元素是字符串,因此Python正在执行lexographic排序,其中所有以
'1'
开头的字符串都在以'2'
开头的字符串之前。在为了获得所需的排序,您需要将第一个条目视为
float
而不是字符串。在我们可以将
sorted
与自定义排序函数一起使用,该函数在排序之前将第一个条目转换为浮点。它还保留了第二个元组元素,以处理第一个条目可能不唯一的情况。在我必须添加一个
x[0].split()[0]
,这样我们就可以在空间中拆分第一个元组元素,并且只获取前几部分,因为有些元素的值是'12.2 (d)'
,而我们只需要'12.2'
。在把第一个元素的剩余部分转换成第一个元素,然后把它转换成第一个元素。在
^{pr2}$相关问题 更多 >
编程相关推荐