0

次のようなタプルのリストがあるとします。

listo = [('a','1'),('b','0'),('c','2'),('d','0')]

各タプルの 2 番目のインデックスに基づいて最小のタプルが必要な場合は、次のlambdaように関数を使用して min 関数をカスタマイズできます。

min(listo, key=lambda x: x[1])

現状では、このコードは次を返します。

In [31]: min(listo, key=lambda x: x[1])
Out[31]: ('b', '0')

しかし、これは 1 つのタプルしか得られず、最初に遭遇したタプルだけです。minすべてのタプルが必要な場合はどうすればよいですか? したがって、次のようなものが返されます。

In [31]: min(listo, key=lambda x: x[1])
Out[31]: [('b', '0'),('d','0')]

これを達成する方法について何かアドバイスはありますか?

4

1 に答える 1

3

最初に 1 つの最小値を検索し、次に見つかった最小値に基づいて別の最小値を探すことで、これを行うことができます。

listo = [('a','1'),('b','0'),('c','2'),('d','0')]
minValue = min(listo, key=lambda x: x[1])[1]
minValueList = [x for x in listo if x[1] == minValue]

別のアプローチとして、ある種の最小値のリストを使用する独自の最小関数を作成することもできますが、大きな問題の場合はおそらくはるかに遅くなります。

于 2013-06-27T20:35:58.430 に答える