我有一个包含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
然后101
为nnip
?
答案 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)