2016-11-20 5 views

答えて

2

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

これを試しますkeyパラメータをsorted()とし、並べ替えの基礎となる情報を考慮した新しいタプルを作成します。

タプルの第3の値として実際の文字列を含めて、最初の値と文字列の長さだけを結びつけることに注意してください。あなたが好きなら、それを削除することができます。

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')] 
1

の並べ替えを与えるあなた例えば

、欲しい:

>>> 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

が基準あなたを使用するカスタムソート・キーを使用します。整数値のタプル、文字列項目の長さと

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')] 
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')] 
関連する問題