2016-08-01 27 views
0

我正在嘗試編寫一個lambda函數(對Python的函數式編程風格還是一個新東西)。我有一個這樣的名單:如何編寫用於在Python中對字符串中的事件進行計數的lambda函數sort()

cur_list = [b'1z1zzz\r\n', b'1z1z1zzz\r\n', b'1z1z1zzz\r\n', b'zzzz\r\n', b'1zzzz\r\n'] 

我要排序的「1」出現在他們每個人的號碼列表。所以在上面的列表中,正確的是(排序)的解決辦法是這樣的:

cur_list = [b'zzzz\r\n', b'1zzzz\r\n', b'1z1zzz\r\n', b'1z1z1zzz\r\n', b'1z1z1zzz\r\n'] 

什麼lambda函數在給定列表中插入下面的代碼片段有效排序的「1」的發生字符串?

cur_list.sort(key=#####what lambda function to insert here) 

謝謝你的回答!

+2

你嘗試過什麼呢? – njzk2

+0

@ njzk2在問題的時候,我仍然在學習如何使用lambda(新概念)。是的,我最終想出瞭如何做到這一點,並將其作爲下面的評論分享。 – user1330974

回答

3

這將是:

lambda x: x.count('1') 

當然,你有什麼似乎像一個字節的字符串數組,你可能希望這樣的:

lambda x: x.count(b"1") 
+3

不要解碼。字節對象與字符串具有相同的方法,它們只是期望字節。只需使用lambda x:x.count(b「1」)' –

+1

這看起來更乾淨,應該也更快,謝謝您的提示! –

+0

謝謝你的回答。如果有人想知道完整的代碼作爲答案,這就是我得到的: cur_list.sort(key = lambda x:str(x).count('1')) 或者像@ juanpa.arrivillaga建議的那樣: cur_list.sort(key = lambda x:x.count(b'1')) 謝謝大家! – user1330974

相關問題