我正在通过一个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