リストから 0 より大きい最小値を特定しようとしていますが、助けが必要です。
誰かがサンプルコードを提供できますか?
ありがとう
と呼ばれる初期リストが与えられた場合values
:
values = [...]
result = min(value for value in values if value > 0)
結果の値は に格納されresult
ます。ここでは、この場合のメモリ節約のために、リスト内包表記の代わりにフィルターを使用したジェネレーター式を使用します。O(1)
def smallest_value_greater_than_0(numbers):
return min(num for num in numbers if num > 0)
コメントで要求されているように、辞書があり、最小値を持つアイテムのキーと値の両方を返したい場合:
def smallest_value_greater_than_0(numbers):
value, key = min((v, k) for k, v in numbers.iteritems() if v > 0)
return key, value
numbs = dict(A=2, B=3, C=0)
key, value = smallest_value_greater_than_0(numbs) # key="A", value=2
(Python 3.x では、numbers.items()
代わりに を使用しnumbers.iteritems()
ます。また、Python 3 では、すべてのキーが同じ型でなければならないことに注意してください。)
複数のエントリが同じ値を持つ場合、これは Python のソート順を使用して、最も低いキーを持つエントリを返すことに注意してください。たとえば、A=1、B=3、C=0、D=1 の場合、A=1 が返されますが、D=1 は返されません。一部のキーが数値で他が文字列である場合、または一部が大文字で一部が小文字である場合、予測可能ではありますが、期待した結果が得られない場合があります。
ジェネレーターを使用できます:
def smallestPositive(lst):
return min(x for x in lst if x > 0)