繁体   English   中英

如何按特定字符的数量对字符串列表进行排序?

[英]How to sort list of strings by count of a certain character?

我有一个字符串列表,我需要通过某个字符的外观来命令它,让我们说"+" 所以,例如,如果我有这样的列表:

["blah+blah", "blah+++blah", "blah+bl+blah", "blah"]

我需要得到:

["blah", "blah+blah", "blah+bl+blah", "blah+++blah"]

我一直在研究sort()方法,但我不完全理解如何将key参数用于复杂的订单标准。 显然sort(key=count("+"))不起作用。 是否可以像sort()那样订购列表,或者我是否需要为它创建一个函数?

是的, list.sort可以这样做,但你需要指定key参数:

In [4]: l.sort(key=lambda x: x.count('+'))

In [5]: l
Out[5]: ['blah', 'blah+blah', 'blah+bl+blah', 'blah+++blah']

在此代码中, key函数接受单个参数并使用str.count来计算其中'+'的出现次数。

对于list.sort(key=count('+')) ,如果你像这样定义count函数(使用operator.methodcaller ),你可以使它工作:

count = lambda x: methodcaller('count', x) # from operator import methodcaller

您可以使用 -

s = ["blah+blah","blah+++blah","blah+bl+blah","blah"]
print(sorted(s,key=lambda t: t.count('+')))
>>["blah","blah+blah","blah+bl+blah","blah+++blah"]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM