重複の可能性:
リスト/タプルのソート(リスト/タプル)方法は?
タプルの2番目の値で番号順に並べ替えたいタプルのリストがあります。使用しているリストのサンプルは次のとおりです。
[('H2O', '6'), ('O2', '4')]
したがって、この場合に必要なのは次のとおりです。
[('O2','4'),('H2O',6')]
私はこれが本当に基本的なことを知っています。私はそれを理解しているように見えます。
重複の可能性:
リスト/タプルのソート(リスト/タプル)方法は?
タプルの2番目の値で番号順に並べ替えたいタプルのリストがあります。使用しているリストのサンプルは次のとおりです。
[('H2O', '6'), ('O2', '4')]
したがって、この場合に必要なのは次のとおりです。
[('O2','4'),('H2O',6')]
私はこれが本当に基本的なことを知っています。私はそれを理解しているように見えます。
key
次のパラメータを使用しますsort
。
mylist.sort(key = lambda x: int(x[1]))
これにより、タプルの 2 番目の要素が整数に変換され、これらの整数で並べ替えられます。
タプルには 2 番目の要素に数値が含まれているため、文字列ではなくタプルに数値を格納する方が理にかなっています。その場合、次のようにソートできます。
import operator
mylist.sort(key = operator.itemgetter(1))
>>> l = [('H2O', '6'), ('O2', '4')]
>>> l.sort(key = lambda x: int(x[1]))
>>> l
[('O2', '4'), ('H2O', '6')]
sort
メソッドはin-place
ソートを行うため、list
.
sorted
元のリストを変更せずに、ソートされたリストを返す関数を使用することもできます。
>>> sorted(l, key=lambda x: int(x[1]))
[('O2', '4'), ('H2O', '6')]
>>> l
[('H2O', '6'), ('O2', '4')] # Original list unmodified
ソートされたリストを反復処理する場合は、しばしばsorted
関数を使用します。
(または) のkey
引数を使用する必要があります。iterable のすべての要素 (この場合は各タプル) に渡される関数です。sort
sorted
あなたが使用することができますoperator.itemgetter
...
In [1]: import operator
In [2]: chem = [('H2O', '6'), ('O2', '4')]
In [3]: sorted(chem, key=operator.itemgetter(1))
Out[3]: [('O2', '4'), ('H2O', '6')]
または単純な関数:
In [4]: sorted(chem, key=lambda x: x[1])
Out[4]: [('O2', '4'), ('H2O', '6')]
編集:interjayは正しいです:2番目の項目を数値に変換する方が良いです:
sorted(chem, key=lambda x: int(x[1]))
それ以外の場合は、アルファベット順に並べ替えられます。
最初にパラメータをimport operator
使用して次のことを行う必要があります。 key
list.sort()
list.sort(key=lambda x: x[1])
より速く、
list.sort(key=operator.itemgetter(1))