我正在通過一個Python包的代碼嘗試瞭解它在做什麼,以便我可以對其進行修改,但是我在一個步驟中感到困惑。Python-lambda比較函數在自定義訂單上進行比較
的代碼有行:
get_key = lambda r: (r.CHROM, r.POS)
這是用來訂購基於r.CHROM
和r.POS
(我覺得至少這就是它在做什麼)的列表。 鑑於我的具體情況,r.CHROM
是str
數據類型,其可以是來自1-22
的任何數值,以及按照排序優先級的順序的字母字符X
,Y
和MT
。
問題是,當使用這個lambda函數進行排序時,它按照字母數字排序,並以1,10,11,12,13,14,15,16,17,18,19,2,20,21,22, ...
的順序出現,這顯然不符合我的要求。
是否有可能修改此lambda函數以提供自定義比較優先級或層次結構,以便生成的列表以1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,X,Y,MT
的形式出現?
任何指針將不勝感激!我在這裏不知所措。
我猜你在結果列表中的'151,6'是一個錯字?你的意思是'15,16'? – Kevin 2014-09-18 17:25:52
@凱文哎呀,是的。更正了,謝謝。 – Brett 2014-09-18 17:27:39