簡體   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