#defaultdict
#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]
Я ожидал бы увидеть совпадение при сравнении результатов ниже. на мой взгляд, совпадение = 1/2 и v = 1/2 / CPU0 должно совпадать и устанавливать ‘result’ = 0. Однако этого не происходит. Пожалуйста, сообщите о правильном синтаксисе.
** совпадение = 1/2 v = 0/7 /CPU0 **
** совпадение = 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=НЕТ’, 25, ‘TenGigE1/2’, ‘РЕПЛИКАЦИЯ=НЕТ’], [‘TenGigE1/2/0/25.201 ‘, ‘PSE2=НЕТ’, 25, ‘TenGigE1/2’, ‘РЕПЛИКАЦИЯ=НЕТ’], [‘TenGigE1/2/0/25.201 ‘, ‘PSE2=НЕТ’, 25, ‘TenGigE1/2’, ‘РЕПЛИКАЦИЯ=НЕТ’]]})
Ответ №1:
Я думаю, не совсем уверен, что вы ищете начальный индекс подстроки, если есть совпадение. Например, если 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))