按字符串中的单词数对字符串列表进行排序

时间:2014-06-09 20:24:40

标签: python string list sorting

我有一个字符串列表:

mylist = ["superduperlongstring", "a short string", "the middle"]  

我想以这样的方式对它进行排序:首先是字数最多的字符串,即

mylist = ["a short string", "the middle", "superduperlongstring"]  

它有点棘手,因为如果我按长度排序

mylist.sort(key = len)

我回到了我开始的地方。

有没有人遇到过这个优雅的解决方案?感谢。

1 个答案:

答案 0 :(得分:4)

假设单词由空格分隔,则调用不带参数的str.split会返回字符串包含的单词列表:

>>> "superduperlongstring".split()
['superduperlongstring']
>>> "a short string".split()
['a', 'short', 'string']
>>> "the middle".split()
['the', 'middle']
>>>

因此,您可以根据这些列表的长度对mylist进行排序,从而获得所需的输出:

>>> mylist = ["superduperlongstring", "a short string", "the middle"]
>>> mylist.sort(key=lambda x: len(x.split()), reverse=True)
>>> mylist
['a short string', 'the middle', 'superduperlongstring']
>>>

您还需要将reverse的{​​{1}}参数设置为list.sort,如上所示。