如何根据字符串的长度对Python列表进行排序?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (199)

我想根据字符串长度对字符串列表进行排序。我试着按以下方式使用排序,但似乎没有给出正确的结果。

xs = ['dddd','a','bb','ccc']
print xs
xs.sort(lambda x,y: len(x) < len(y))
print xs

['dddd', 'a', 'bb', 'ccc']
['dddd', 'a', 'bb', 'ccc']

哪里不对?

提问于
用户回答回答于

当你经过一个lambdasort,您需要返回一个整数,而不是布尔值。因此,您的代码应该改为如下所示:

xs.sort(lambda x,y: cmp(len(x), len(y)))

请注意CMP是一个内建函数,所以cmp(x, y)如果x小于y返回-1

当然,您可以使用key参数:

xs.sort(key = lambda s: len(s))

这说明sort方法来根据键函数返回的任何内容进行排序。

或者

xs.sort(key = len)

也可以使用内置的list.sort方法,它创建一个新列表,而不是对现有列表进行排序:

print sorted(xs, key=len)
用户回答回答于

创建新列表:

>>> xs = ['dddd','a','bb','ccc']
>>> sorted(xs, key=len)
['a', 'bb', 'ccc', 'dddd']

就地分类:

>>> xs.sort(key=len)
>>> xs
['a', 'bb', 'ccc', 'dddd']

扫码关注云+社区

领取腾讯云代金券