将字典键与值进行比较,并确定与python不匹配

时间:2020-06-08 21:03:19

标签: python-3.x

我有以下字典:

dict1 = { 
    '10.10.10.0/24':'net-10.10.10.10-24',
    '10.10.1.0/27':'net-10.10.1.0-27',
    '10.8.8.1':'host-10.8.8.1-32',
    '8.8.8.8/32':'hst-8.8.8.8',
    '192.168.10.1':'hst-186.20.12.1-32'
    }

我正在寻找一种方法,可以检测到关键IP地址(暂时不涉及子网)和评估IP地址之间的任何不匹配,例如最后一个密钥192.68.10.1与186.20.12.1不匹配。 我尝试应用切片或替换元素,然后再添加到字典中,但效果不佳。 如何最合适地识别差异? 预先感谢!

1 个答案:

答案 0 :(得分:0)

如果字典中的键和值遵循问题的格式,则可以使用此脚本(此脚本未考虑子网):

import re

dict1 = {
    '10.10.10.0/24':'net-10.10.10.10-24',
    '10.10.1.0/27':'net-10.10.1.0-27',
    '10.8.8.1':'host-10.8.8.1-32',
    '8.8.8.8/32':'hst-8.8.8.8',
    '192.168.10.1':'hst-186.20.12.1-32'
}

r = re.compile(r'\d+')

for k, v in dict1.items():
    if [*map(int, r.findall(k))][:4] != [*map(int, r.findall(v))][:4]:
        print('{} {} mismatch!'.format(k, v))

打印:

10.10.10.0/24 net-10.10.10.10-24 mismatch!
192.168.10.1 hst-186.20.12.1-32 mismatch!