@newPsevdonim
Python разработчик

Как сгруппировать ip по /24?

У меня список ip мне нужно сгруппировать их по /24. Для этого я написал следующий скрипт:
mask_dict = {}

for i in test:
    mask = IPv4Network('{}/24'.format(i), strict = False)
    for j in test:
        if IPv4Address(j) in mask:
            if mask in mask_dict:
                mask_dict[mask].append(j)
            else: 
                mask_dict[mask] = [j]
            test.remove(j)


Но он почему-то не проходит по всем ip из списка, почему это может происходить и можно ли это сделать как-то быстрее.
  • Вопрос задан
  • 98 просмотров
Решения вопроса 1
shurshur
@shurshur
Сисадмин, просто сисадмин...
Ошибка в том, что не надо в процессе итерации по списку удалять из него элементы. Результат может быть непредсказуем.

И вообще, код какой-то безумный. Задачу можно решить в один цикл, примерно так:

mask_dict = {}

for i in test:
    mask = IPv4Network('{}/24'.format(i), strict = False)
    if mask in mask_dict:
        mask_dict[mask].append(i)
    else: 
        mask_dict[mask] = [i]
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
dimonchik2013
@dimonchik2013
non progredi est regredi
быстрее делай через мультитред / мультипроцессинг
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы