0

辞書で最大値を見つける方法を示す多くの例が利用可能です。なぜ最大のキー/値がこのように見つからないのか、興味がありました。

from random import randint

# Create dict with random keys and values.
d = {randint(1, 99): randint(1, 99) for i, j in enumerate(range(20))}

# Loop through dict to find max value
maxi = 0
for key in d:
    if d[key] > maxi:
        maxi = key

print(d, d[maxi])

d を視覚的に確認すると、d[maxi] が最大値ではないことがわかります。

4

4 に答える 4

4

if d[key] > maxi現在のを最大キーと比較しています。最も簡単な変更は、を書くことif d[key] > d[maxi]です。(最大値を独自の変数として保持することもできます)。

于 2013-02-15T03:23:01.067 に答える
1

コードの問題は、0 より大きい値を初めて見つけたときに、値の代わりにキーを保存することです。次に、次のを保存した最後のキーと比較します。

結局、あなたはあなたが望むものではない数値を保存します(最終的に数値のロジックがあるかどうかさえわかりませんmaxi-私は単なる別の乱数だと思います)。

于 2013-02-15T03:47:01.157 に答える
1
>>> d = {"a": 5, "b": 99, "c": 3}
>>> max(d, key=d.get)
'b'
于 2013-02-15T03:44:40.900 に答える