具有最大值的Python dict键

时间:2016-09-30 19:12:22

标签: python dictionary

我有一个包含IP地址及其可用内存空间的字典。 我正在尝试将IP保存到一个变量,将下一个最高的保存到另一个变量。

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

为什么将192.168.100.103打印为rmip?它不应该是具有最高价值的那个吗?即192.168.100.102然后101nnip

1 个答案:

答案 0 :(得分:4)

字典中的值是字符串,因此max将它们作为字符串进行比较。如果你想将它们作为整数进行比较,那么你需要使用key函数将字符串转换为整数...:

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)