I have a python list
l = [('insert_0', 'gtttaattgag'), ('insert_1', 'tttaattgagt'), ('insert_10', 'gttgtcatatg'), ('insert_11', 'ttgtcatatgt'), ('insert_12', 'tgtcatatgtt'), ('insert_2', 'ttaattgagtt'), ('insert_3', 'taattgagttg'), ('insert_4', 'aattgagttgt'), ('insert_5', 'attgagttgtc'), ('insert_6', 'ttgagttgtca'), ('insert_7', 'tgagttgtcat'), ('insert_8', 'gagttgtcata'), ('insert_9', 'agttgtcatat')]
I want it sorted so that it looks like
l_needed = [('insert_0', 'gtttaattgag'), ('insert_1', 'tttaattgagt'),('insert_2', 'ttaattgagtt'),('insert_3', 'taattgagttg'), ('insert_4', 'aattgagttgt'), ('insert_5', 'attgagttgtc'), ('insert_6', 'ttgagttgtca'), ('insert_7', 'tgagttgtcat'), ('insert_8', 'gagttgtcata'), ('insert_9', 'agttgtcatat'),('insert_10', 'gttgtcatatg'), ('insert_11', 'ttgtcatatgt'), ('insert_12', 'tgtcatatgtt'),..]
i.e. l
is sorted in ascending order of the subscript of "insert"
. I tried
l.sort()
does not produce l_needed
. Can you suggest edits?
答案 0 :(得分:5)
您可以拆分数字并将其转换为整数:
In [7]: sorted(l, key=lambda x: int(x[0].rsplit('_', 1)[-1]))
Out[7]:
[('insert_0', 'gtttaattgag'),
('insert_1', 'tttaattgagt'),
('insert_2', 'ttaattgagtt'),
('insert_3', 'taattgagttg'),
('insert_4', 'aattgagttgt'),
('insert_5', 'attgagttgtc'),
('insert_6', 'ttgagttgtca'),
('insert_7', 'tgagttgtcat'),
('insert_8', 'gagttgtcata'),
('insert_9', 'agttgtcatat'),
('insert_10', 'gttgtcatatg'),
('insert_11', 'ttgtcatatgt'),
('insert_12', 'tgtcatatgtt')]