Сортировать порты python

Всем приве! Имеется текстовый файл со списком ip:port, мне нужно сортировать ip адреса по номеру порта в отдельный файл. Есть код

with open('file1.txt') as file:
for k, i in enumerate(file.read().split('\n')):
    if k != 0:
        name_file = str(i.split(":")[-1].strip()) + '.txt'
        file_2 = open(name_file, 'w')
        file_2.write(i.split(':')[0])
        file_2.close()

Приведенный выше код записывает только первый ip адрес, а мне нужно записать все ip из списка с одинаковым портом, как мне это сделать?


Ответы (1 шт):

Автор решения: slippyk
group_ip_by_port = {}

with open('test.txt', 'r') as f:
    for line in f:
        ip, port = line.strip().split(':')
        if port not in group_ip_by_port:
            group_ip_by_port[port] = []
        group_ip_by_port[port].append(ip)

for port, ip_lst in group_ip_by_port.items():
    with open(f'{port}.txt', 'w+') as f:
        f.write('\n'.join(ip_lst))
→ Ссылка