Это один из кусочков моего первого боевого кода.
У меня есть список из словарей test_list. Реальные данные показать не могу. Так как там содержится конфиденциальная информация.
В каждом словаре несколько записей, одна из которых в формате: ‘CIRCUIT_ID’: ‘E4:6F:13:B7:FA:B1::55.33.6.31::8’.
Одна из подзадач: перебрать все словари из списка и найти дубли по частичному вхождению в ключе словаря. Нужно достать значение ключа, формата ‘E4:6F:13:B7:FA:B1::55.33.6.31::8’, достать оттуда всё что идёт после первых двойных двоеточий 55.33.6.31::8 и проверить есть ли в других словарях списка такие же подстроки.
Для тех кто немного понимает в сетях. У меня большая база данных с данными по мак адресам, коммутаторам и портам. Текущая подзадача вытащить дублирующие строки IP порт. Чтобы понять по каким портам и на каких коммутаторах, больше одной записи. Исходный код ниже.
test_list = [{},{},{},{},{},{},{},{}]
for row in test_list:
circuit = row.setdefault("CIRCUIT_ID")
str_circuit = str(circuit)
str_ip_port = str_circuit[str_circuit.index("::")+2:] # этой строкой я делаю срез от найденной позиции +2
for row1 in test_list:
str_circuit_sravn = row1.setdefault("CIRCUIT_ID")
str_ip_sravn = str_circuit_sravn[str_circuit_sravn.index("::")+2:] # беру срез[c позиции двух двоеточий+2 до конца]
if (str_circuit != str_circuit_sravn) and (str_ip_port == str_ip_sravn) :
print(str_ip_port)