Python如何实现字符优先级高于长度的数组排序
问题解答
可以直接使用Python内置的sort()函数实现需求,不需要自行编写自定义排序算法。Python的列表内置sort()方法支持传入自定义的键函数,完全可以匹配你的排序规则。
实现逻辑
你的预期排序本质是优先按字符串去掉首字符后的内容做字典序排序,Python字符串默认的比较规则刚好符合要求:逐位比对字符,若其中一个字符串是另一个的前缀,则短字符串更小、排在前面。
可运行示例代码
raw_list = ["@note1", "@note2", "=dir1/", "=dir2/", "@dir1/note1", "@dir1/note2"] # 排序键设置为去掉首字符后的字符串 raw_list.sort(key=lambda x: x[1:]) print(raw_list) # 输出结果:['=dir1/', '@dir1/note1', '@dir1/note2', '=dir2/', '@note1', '@note2']
原有方案出错的原因
你先后调用了两次sort方法,第二次按长度倒序排序时,会优先按长度重排所有元素,只有长度相同的元素才会保留第一次字典序的排序结果,因此打乱了整体的字符排序优先级。
内容的提问来源于stack exchange,提问作者Zemelon
相关产品推荐
相关产品推荐

