如何按元素内含数字对字符串列表排序?实现通用排序函数
按字符串元素中的数字排序列表的解决方案
通用思路
要解决这类问题,核心就是从每个字符串元素中提取出数字作为排序的依据,然后利用Python内置的排序函数,通过指定key参数来实现自定义排序规则。
针对你的具体场景的实现
你给出的列表元素格式是[customerName, orderPrice],我们可以写一个通用函数来处理任意这类格式的列表:
def sort_by_order_price(customer_list): # 定义一个辅助函数,用来提取每个元素中的订单金额 def extract_price(item): # 分割字符串,取金额部分,去除前后空格后转为浮点型 price_part = item.split(',')[1].strip() return float(price_part) # 使用sorted函数,按提取出的金额升序排序 return sorted(customer_list, key=extract_price)
测试验证
把你的list1传入这个函数,就能得到想要的list2:
list1 = ['John, 35.60', 'Alf, 200.13', 'Greg, 62.76', 'Paul, 555', 'George, 123.6', 'Colin, 35.60', 'Phil, 23', 'Bret, 200.13'] list2 = sort_by_order_price(list1) print(list2) # 输出结果完全符合预期: # ['Phil, 23', 'John, 35.60', 'Colin, 35.60', 'Greg, 62.76', 'George, 123.6', 'Alf, 200.13', 'Bret, 200.13', 'Paul, 555']
代码说明
extract_price函数是排序的核心:它把每个字符串按逗号分割,取出后面的金额部分,清理掉多余空格后转成float类型——这样不管金额是整数还是小数,都能统一处理,排序逻辑不会出错。sorted()默认是升序排序,如果需要降序,只需要加上reverse=True参数,比如sorted(customer_list, key=extract_price, reverse=True)。- 这个函数是通用的,只要输入列表的元素都符合
"姓名, 金额"的格式,不管列表长度多少,都能正确返回排序后的结果。
内容的提问来源于stack exchange,提问作者J. Malone
相关产品推荐
相关产品推荐

