按字符串中单词数量排序字符串列表

2 投票
1 回答
3037 浏览
提问于 2025-04-18 09:11

我有一个字符串列表,像这样:

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

我想把它们排序,要求是单词数量最多的字符串排在最前面,也就是说:

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

这有点棘手,因为如果我直接按长度排序的话,

mylist.sort(key = len)

我就又回到原来的状态了。

有没有人遇到过比较优雅的解决办法呢?谢谢。

1 个回答

8

假设单词是通过空格分开的,调用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']
>>>

你还需要把list.sortreverse参数设置为True,就像上面所示的那样。

撰写回答