我有以下列表,我需要从最大到最小的名称和数字进行排序。
['joe: 5', 'ed: 9', 'joe: 7', 'ed: 8']
我遇到以下问题:
所以我的最终结果应该是:
['ed: 9', 'ed: 8', 'joe: 7', 'joe: 5']
答案 0 :(得分:5)
>>> lis=['joe: 5', 'ed: 9', 'joe: 7', 'ed: 8']
>>> sorted(lis,key=lambda x:int(x.split()[-1]),reverse=True)
>>> ['ed: 9', 'ed: 8', 'joe: 7', 'joe: 5']
您可以使用str.split
获取每个列表项中的整数(如下所示),然后使用该整数对列表进行排序:
>>> int(lis[0].split(":")[1])
>>> 5
#or
>>> int(lis[0].split()[1])
>>> 5