与defaultdict中的值不匹配

时间:2019-04-11 04:46:25

标签: defaultdict

for v in temp_var_dict['PSE2']:

                           #print(v)
                           match = str(match)
                           match = match.strip("[]")
                           match = match.strip("''")
                           print(f'** match={match}    v={v}    **')
                           result = [index for index, value in enumerate(v) if match in value]

在比较下面的结果时,我希望看到一个匹配项。在我看来,match = 1/2和v = 1/2 / CPU0应该匹配并设置'result'= 0。虽然没有发生。请建议正确的语法。

** match = 1/2 v = 0/7 / CPU0 **

** match = 1/2 v = 1/0 / CPU0 **

** match = 1/2 v = 1/2 / CPU0 ** defaultdict(,{'PSE1':['0/0 / CPU0','1/3 / CPU0'],'PSE2':['0/7 / CPU0','1/0 / CPU0','1 / 2 / CPU0'],'IF_PSE1':[['TenGigE1 / 2/0 / 25.201','PSE2 = NO',25,'TenGigE1 / 2','REPLICATION = NO'],['TenGigE1 / 2/0 /25.201'、'PSE2=NO'、25、'TenGigE1/2'、'REPLICATION=NO']、['TenGigE1/2/0/25.201'、'PSE2=NO'、25、'TenGigE1/2', 'REPLICATION = NO']]})

1 个答案:

答案 0 :(得分:0)

我认为,如果有匹配项,您不确定所寻找的是子字符串的起始索引。例如,如果v ='1/2 / CPU0'并且match ='1/2' 存在匹配项,子字符串“ 1/2”从索引“ 0”开始,所以结果为= 0

不确定您的逻辑中有什么问题,但是在这种情况下str.find(substring)是您的朋友。如果没有找到匹配项,它将返回-1,如果找到匹配项,它将返回子字符串的起始索引。

在下面查看代码的修改后的“有效”版本:

temp_var_dict = {'PSE1': ['0/0/CPU0', '1/3/CPU0'], 'PSE2': ['0/7/CPU0', '1/0/CPU0', '1/2/CPU0'], 'IF_PSE1': [['TenGigE1/2/0/25.201', 'PSE2=NO', 25, 'TenGigE1/2', 'REPLICATION=NO'], ['TenGigE1/2/0/25.201', 'PSE2=NO', 25, 'TenGigE1/2', 'REPLICATION=NO'], ['TenGigE1/2/0/25.201', 'PSE2=NO', 25, 'TenGigE1/2', 'REPLICATION=NO']]}

match = "1/2"

for v in temp_var_dict['PSE2']:
    match = str(match)
    match = match.strip("[]")
    match = match.strip("''")

    result = v.find(match)

    print "match={%s}    v={%s}  result={%s}" % (match,v,str(result))