[英]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.