2016-09-30 25 views
0

私はIPアドレスとその空きメモリ容量を持つ辞書を持っています。 私はある変数にIPを保存しようとしており、次に高い変数を別の変数に保存しようとしています。最大値のPython dictキー

masterdict: {'192.168.100.102': '1620', '192.168.100.103': '470', '192.168.100.101': '1615'} 

print masterdict 

rmip = max(masterdict, key=masterdict.get) 

print "<br>rmip<br>" 
print rmip 

del masterdict [rmip] 

print "<br>masterdict after deletion<br><br>" 
print masterdict 

nnip = max(masterdict, key=masterdict.get) 

print "<br>nnip<br>" 
print nnip 

しかし、私が得る出力は次のようになります。

masterdict { '192.168.100.102': '1620'、 '192.168.100.103': '470'、 '192.168.100.101': ' 1615 '}

rmip 192.168.100.103

masterdict削除 後{' 192.168.100.102' : '1620'、 '192.168.100.101': '1615'}

nnip 192.168.100.102

なぜそれがrmipとして192.168.100.103を印刷していますか?最高の価値を持つものでなければならないのですか?すなわち192.168.100.102、次に101nnipとすると、

答えて

4

辞書の値は文字列なので、maxはそれらを文字列として比較しています。あなたは整数としてそれらを比較したい場合は、...整数に文字列を変換するために、キーの機能を使用する必要があります。

rmip = max(masterdict, key=lambda key: int(masterdict[key]) 

またはintに値を変更して、あなたの現在の最大のステートメントを使用します。

masterdict = {k: int(v) for k, v in masterdict.items()} 
rmip = max(masterdict, key=masterdict.get) 
+2

またはmasterdictの値をintに変更すると、現在の 'max'関数が機能します – depperm

+0

ありがとうございます。これは素晴らしいです。 @deppermumいいえ。辞書はこのように作成されます。私はVMの束からメモリの値を取っています。そして彼らは文字列として保存されています。私はそれをどのように変更するかについてはあまりよく分かりません。 – Aditya

関連する問題