2016-11-20 78 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')] 
相關問題