Рубрики
Программирование Python

23.06.2021 найти дубли в списке из справочников Python

Это один из кусочков моего первого боевого кода.

У меня есть список из словарей 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)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *