Python 用数字对数字排序字符串列表
我有一个列表,如下所示:Python 用数字对数字排序字符串列表,python,list,sorting,Python,List,Sorting,我有一个列表,如下所示: mylist=['item_11'、'item_0'、'item_1'、'item_2'、'item_9'、'item_10'、'item_none'] 我想按数字排序,但以“item_none”开头,因此结果如下所示: ['item_none'、'item_0'、'item_1'、'item_2'、'item_9'、'item_10'、'item_11'] 我找到了一种适合我的方法,但它使用两种列表理解将“item_none”重命名为“item_-1”并返回。我想
mylist=['item_11'、'item_0'、'item_1'、'item_2'、'item_9'、'item_10'、'item_none']
我想按数字排序,但以“item_none”开头,因此结果如下所示:
['item_none'、'item_0'、'item_1'、'item_2'、'item_9'、'item_10'、'item_11']
我找到了一种适合我的方法,但它使用两种列表理解将“item_none”重命名为“item_-1”并返回。我想知道是否有一种更优雅的方法可以做到这一点?谢谢你的建议
newlist=[[x中的'none'为'item\-1',否则x为mylist中的x]
排序(key=lambda x:int(x.split(“”“)[-1]))
finallist=['item_none'if'-1'在x中,否则x代表x在newlist中]
如果列表中没有项,则可以将键设置为-1
In [8]: mylist = ['item_11', 'item_0', 'item_1', 'item_2', 'item_9', 'item_10', 'item_none']
In [9]: mylist.sort(key=lambda x: -1 if x.split("_")[-1] == "none" else int(x.split('_')[-1]))
In [10]: mylist
Out[10]: ['item_none', 'item_0', 'item_1', 'item_2', 'item_9', 'item_10', 'item_11']
您可以编写一个键函数,将None
解析为float(“-inf”)
或类似的内容。