按字符串中单词数量排序字符串列表
我有一个字符串列表,像这样:
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.sort
的reverse
参数设置为True
,就像上面所示的那样。