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

标签 python string list sorting

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

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

我想以这样的方式排序,即单词数最多的字符串排在第一位,即

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

这有点棘手,因为如果我按长度就地排序

mylist.sort(key = len)

我又回到了起点。

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

最佳答案

假设单词由空格分隔,调用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,如上所示。

关于python - 按字符串中单词的数量对字符串列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24128380/

相关文章:

python - 应用于图像列表的 np.array 和 np.stack 之间有什么区别

python - 如何检查 python 中的真正相等性(numpy 数组)?

python - 导入使用 OpenMP 的 python 扩展后显示 PyQt4 窗口时崩溃

c - C 中使用分隔符分割字符串

python - 使用 Python 正则表达式分割字符串

string - 在 CMake 中如何将命令的多行输出转换为列表?

c++ - 在我的例子中 const char * 到 char *

多个列表的java高效连接

list - 为什么对带有 elisp 的列表进行更改?

python - 颜色还原 - 仅生成红色