首页 > 解决方案 > 在python中按字符串中的数值对字符串进行排序

问题描述

对于包含这些字符串的列表,我试图按“_”字符之前的数字对它们进行排序。

my_lst = ['25_mg', '2_mg', '200_mg', '10_mg', '5_mg']

尝试了几种类似的方法: print(test.sort(key = lambda x: x.split('_')[0]))

但是,列表没有按预期排序,如下所示:

my_lst = ['2_mg', '5_mg', '10_mg', '25_mg', '200_mg']

标签: pythonstringsorting

解决方案


您的排序将对字符串“25”、“2”等进行排序,因此以“1”开头的所有内容都将排在第一位。看来您想按它们的实际数值排序,所以将其更改为

my_lst.sort(key = lambda x: int(x.split('_')[0]))
print(my_lst)

这使

['2_mg', '5_mg', '10_mg', '25_mg', '200_mg']

推荐阅读