看起来字典的keys()和values()方法返回的列表总是1对1的映射(假设在调用这两个方法之间字典没有改变)。
例如:
>>> d = {'one':1, 'two': 2, 'three': 3}
>>> k, v = d.keys(), d.values()
>>> for i in range(len(k)):
print d[k[i]] == v[i]
True
True
True
如果不改变调用keys()和调用values()之间的字典,假设上面的for循环总是打印True是错误的吗?我找不到任何证明这一点的文件。
我同意其他人的观点,在python 3.6+中,如果不受用户影响,它应该保持不变。
几天前我的代码中的一个例子:
ips = { '001' : '199.250.178.14', '002' : '199.18.2.89', '003' : '109.251.63.21' }
def run(self):
for x, y in self.ips.items():
try:
subprocess.check_call(
['ping', '-n', '1', y],
stdout=DEVNULL, # suppress output
stderr=DEVNULL
)
except subprocess.CalledProcessError:
nextServer = ('HUB ' + x + ' is OFFLINE ' + " IP: " + y)
输出总是相同的顺序,与我输入的完全相同,即只有离线服务器才会按顺序显示:
HUB 003为OFFLINE IP: 109.251.63.21
因为前两个是可达的
希望能把它清除掉