Skip to main content
 首页 » 编程设计

python之如何根据数值的顺序对包含组合数值和文本值的列表进行排序

2025年05月04日15jillzhang

我有一个未排序的列表

['1 Apple', '6 Apple', '2 Apple', '4 Apple', '3 Apple', '170 Apple', 'category'] 

我怎样才能制作一个按升序添加值的列表,这样:

['category', '1 Apple', '2 Apple', '3 Apple', '4 Apple', '6 Apple', '170 Apple']` 

请您参考如下方法:

应该适用于任何类型的“仅混合字符串 + 数字字符串元素”列表的简单解决方案。

import re 
s = ['1Apple', '6 Apple', '2 Apple', '4 Apple', '3 Apple', '170 Apple', 'category'] 
nums = [re.findall('\d+',ss) for ss in s] # extracts numbers from strings 
numsint = [int(*n) for n in nums] # returns 0 for the empty list corresponding to the word 
sorted_list = [x for y, x in sorted(zip(numsint, s))] # sorts s based on the sorting of nums2 
 
print(sorted_list) 
# output 
['category', '1Apple', '2 Apple', '3 Apple', '4 Apple', '6 Apple', '170 Apple']