2016-11-20 50 views

回答

2

尝试

sorted(s, key=lambda v: (v[0], len(v[1]), v[1])) 

这按照考虑的顺序,使用sorted()的参数key来创建一个新的元组,该元组具有您想要基于排序的信息。

请注意,我包含实际字符串作为元组中的第三个值,以断开第一个值和字符串长度的关系。如果你喜欢,你可以删除它。

对于你的榜样,给人

In [1]: s = [(10, 'ATAGCTAT'), (4, 'TTAGCTA'), (6, 'AATTAATCGAT'), (6, 'GCTATAGC')] 

In [2]: sorted(s, key=lambda v: (v[0], len(v[1]), v[1])) 
Out[2]: [(4, 'TTAGCTA'), (6, 'GCTATAGC'), (6, 'AATTAATCGAT'), (10, 'ATAGCTAT')] 
1

排序与整数值的一个数组和字符串项的长度:

lst = [(10, 'ATAGCTAT'), (4, 'TTAGCTA'), (6, 'AATTAATCGAT'), (6, 'GCTATAGC')] 
lst_sorted = sorted(lst, key=lambda x: (x[0], len(x[1]))) 
print(lst_sorted) 
# [(4, 'TTAGCTA'), (6, 'GCTATAGC'), (6, 'AATTAATCGAT'), (10, 'ATAGCTAT')] 
0

用采用标准的自定义排序键你想要:

>>> l = [(10, 'ATAGCTAT'), (4, 'TTAGCTA'), (6, 'AATTAATCGAT'), (6, 'GCTAT 
>>> sorted(l, key=lambda x: (x[0], len(x[1]))) 
[(4, 'TTAGCTA'), (6, 'GCTATAGC'), (6, 'AATTAATCGAT'), (10, 'ATAGCTAT')] 
0

您可以使用sorted()函数并将参数传递给按照您的键排序标准。

以下教程提供了sorted()函数的不同示例。

https://docs.python.org/3.5/howto/sorting.html#sortinghowto

解决方案:

>>> mylist = [(10, 'ATAGCTAT'), (4, 'TTAGCTA'), (6, 'AATTAATCGAT'), (6, 'GCTATAGC')] 

>>> sorted(mylist, key=lambda val: (val[0], len(val[1]))) 
[(4, 'TTAGCTA'), (6, 'GCTATAGC'), (6, 'AATTAATCGAT'), (10, 'ATAGCTAT')] 
相关问题