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)
与其他类似的元组相比,它提供了您想要的排序顺序.
归档时间: |
|
查看次数: |
224 次 |
最近记录: |