1

重複の可能性:
リスト/タプルのソート(リスト/タプル)方法は?

タプルの2番目の値で番号順に並べ替えたいタプルのリストがあります。使用しているリストのサンプルは次のとおりです。

[('H2O', '6'), ('O2', '4')]

したがって、この場合に必要なのは次のとおりです。

[('O2','4'),('H2O',6')]

私はこれが本当に基本的なことを知っています。私はそれを理解しているように見えます。

4

4 に答える 4

7

key次のパラメータを使用しますsort

mylist.sort(key = lambda x: int(x[1]))

これにより、タプルの 2 番目の要素が整数に変換され、これらの整数で並べ替えられます。

タプルには 2 番目の要素に数値が含まれているため、文字列ではなくタプルに数値を格納する方が理にかなっています。その場合、次のようにソートできます。

import operator
mylist.sort(key = operator.itemgetter(1))
于 2012-12-18T18:07:14.353 に答える
3
>>> 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関数を使用します。

于 2012-12-18T18:06:20.547 に答える
2

(または) のkey引数を使用する必要があります。iterable のすべての要素 (この場合は各タプル) に渡される関数です。sortsorted

あなたが使用することができます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]))

それ以外の場合は、アルファベット順に並べ替えられます。

于 2012-12-18T18:06:05.430 に答える
0

最初にパラメータをimport operator 使用して次のことを行う必要があります。 keylist.sort()

list.sort(key=lambda x: x[1])

より速く、

list.sort(key=operator.itemgetter(1))
于 2012-12-18T18:14:16.027 に答える