Сопоставление не происходит со значением в defaultdict - PullRequest
0 голосов
/ 11 апреля 2019
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. Это не происходит, хотя. Пожалуйста, посоветуйте правильный синтаксис.

** совпадение = 1/2 v = 0/7 / CPU0 **

** совпадение = 1/2 v = 1/0 / CPU0 **

** совпадение = 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 ', 'РЕПЛИКАЦИЯ = NO']]})

1 Ответ

0 голосов
/ 11 апреля 2019

Я думаю, не совсем уверен, что вы ищете начальный индекс подстроки, если есть совпадение.Например, если v = '1/2 / CPU0' и match = '1/2', есть совпадение, а подстрока '1/2' начинается с индекса '0', поэтому результат = 0

Не уверен, чтонеправильно в вашей логике, но str.find (подстрока) является вашим другом в этом случае.Он вернет -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))
...