我的 Python 字符串列表类似于 x
但足够长:
x = ['aaa','ab','aa','c','a','b','ba']
我想将此列表排序为:['a', 'b', 'c', 'aa', 'ab', 'ba', 'aaa']
我做到了如下两个步骤:
>>> x.sort()
>>> x.sort(key=len)
>>> x
['a', 'b', 'c', 'aa', 'ab', 'ba', 'aaa']
但我需要一步到位:我还使用 lambda
函数 (taken help) 绑定(bind):
>>> x.sort(key=lambda item: (item, len(item)))
>>> x
['a', 'aa', 'aaa', 'ab', 'b', 'ba', 'c']
但不是我想要的:
是否可以一步到位?让我开心。
我的 python :
~$ python --version
Python 2.6.6
最佳答案
你弄错了元组的顺序。当 Python 对元组进行排序时,第一个值是 main 排序,第二个是子排序,等等... - 您的代码假定相反的顺序。
您想按长度排序,然后按字母顺序排序:
>>> x.sort(key=lambda item: (len(item), item))
>>> x
['a', 'b', 'c', 'aa', 'ab', 'ba', 'aaa']
编辑:正如 DSM 在评论中指出的那样,Python 将字母排序为大写字母,然后是小写字母。如果不需要此行为,请参阅 this answer .
关于python - 按长度排序的列表,但在一个步骤中按字母顺序排列的长度相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14103620/