如何在python中对轮胎尺寸进行分类

dav*_*erc 4 python sorting list

我正在尝试将(字符串)轮胎尺寸列表从最小到最大排序.

['285/30/18',
 '285/30/19',
 '235/40/17',
 '315/25/19',
 '275/30/19']
Run Code Online (Sandbox Code Playgroud)

应该排序为:

['235/40/17',
 '285/30/18',
 '315/25/19'
 '275/30/19',
 '285/30/19']
Run Code Online (Sandbox Code Playgroud)

我基本上必须从右边,中间然后左边开始排序.

到目前为止我所拥有的(冒泡排序):

# this sorts the first numbers on the right.
nums = list(ulst)
for i in range(len(nums)):
     for j in range(i+1, len(nums)):
         if ulst[j].split('/')[2] < ulst[i].split('/')[2]:
             ulst[j], ulst[i] = ulst[i], ulst[j]
Run Code Online (Sandbox Code Playgroud)

我现在必须对中间进行排序而不会弄乱右行的排序,然后对左行进行排序....

如何在不创建for/if嵌套混乱的情况下解决这个问题?

Gre*_*ill 10

Python有几个功能,使这很容易做到.实际上,您可以在一个声明中完成所有操作:

sorted(nums, key=lambda x: tuple(reversed(list(map(int, x.split("/"))))))
Run Code Online (Sandbox Code Playgroud)

x.split("/")取每个值,使字符串列表:

["235", "40", "17"]
Run Code Online (Sandbox Code Playgroud)

使用map(int, ...)给出一个整数列表:

[235, 40, 17]
Run Code Online (Sandbox Code Playgroud)

reversed() 把它转过来:

[17, 40, 235]
Run Code Online (Sandbox Code Playgroud)

tuple()转换到这一个元组:

(17, 40, 235)
Run Code Online (Sandbox Code Playgroud)

与其他类似的元组相比,它提供了您想要的排序顺序.