如何对含数字与undefined的列表排序并将undefined置于末尾?
解决带'undefined'的数字字符串列表排序问题
你可以通过以下两种简洁的方法实现需求,核心是让'undefined'的排序优先级低于所有数字:
方法一:自定义lambda排序键
直接利用sort()方法的key参数,为每个元素设置排序权重:如果是'undefined'就返回一个极大值(比如无穷大),否则转换为整数参与排序。代码示例:
dirnames = ['1','2','20', '5', 'undefined', '4'] dirnames.sort(key=lambda x: float('inf') if x == 'undefined' else int(x)) print(dirnames) # 输出: ['1','2','4', '5', '20', 'undefined']
方法二:拆分列表后合并
先将列表拆分为数字字符串部分和'undefined'部分,对数字部分排序后再合并,适合存在多个'undefined'的场景:
dirnames = ['1','2','20', '5', 'undefined', '4'] # 分离两类元素 num_items = [item for item in dirnames if item != 'undefined'] undefined_items = [item for item in dirnames if item == 'undefined'] # 对数字字符串按数值排序 num_items.sort(key=int) # 合并得到结果 result = num_items + undefined_items print(result) # 输出: ['1','2','4', '5', '20', 'undefined']
内容的提问来源于stack exchange,提问作者test tes
相关产品推荐
相关产品推荐

