2015-06-16 151 views
4

我有一個字符串列表,我需要通過某個字符的外觀來排序,比如說"+"。 所以,舉例來說,如果我有像這樣的列表:如何按特定字符的數量對字符串列表進行排序?

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

我需要得到:

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

我一直在學習的sort()方法,但我不完全瞭解爲複雜的訂單標準使用關鍵參數。顯然sort(key=count("+"))不起作用。是否可以像sort()那樣按我想要的順序排列列表,還是需要爲它製作功能?

回答

10

是,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 
+1

只要記住,這與「分類」不同。 – Zizouz212

0

您可以使用 -

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"] 
相關問題