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