Python, drukowanie unikatowych elementów listy

Potrzebujesz pomocy z C, C++, perl, python, itp.
Awatar użytkownika
LordRuthwen
Moderator
Posty: 2342
Rejestracja: 18 września 2009, 21:45
Lokalizacja: klikash?

Python, drukowanie unikatowych elementów listy

Post autor: LordRuthwen »

Witam.
Mam plik będący statyczną tablicą ARP, ma on być generowany dynamicznie na podstawie innego pliku razem z odpowiednimi filtrami.
Mam problem jak to rozwiązać, gdyż niektóre wpisy mogą zawierać więcej niż 1 MAC i te wpisy należałoby pominąć w całości dla danego IP, pojedyncze wpisy dla adresu powinny być przepisane do pliku z tablicą ARP. Brak adresu na liście powinien być uzupełniony zerami.
Przykładowy plik z listą do przerobienia (kolumny są oddzielone znakiem \t):

Kod: Zaznacz cały

00:11:22:33:44:55 192.168.0.2
01:11:22:33:44:55 192.168.0.3
02:11:22:33:44:55 192.168.0.5
03:11:22:33:44:55 192.168.0.5
04:11:22:33:44:55 192.168.0.7
Dla takiej listy plik wynikowy powinien wyglądać tak:

Kod: Zaznacz cały

00:11:22:33:44:55 192.168.0.2
01:11:22:33:44:55 192.168.0.3
00:00:00:00:00:00 192.168.0.4
00:00:00:00:00:00 192.168.0.6
04:11:22:33:44:55 192.168.0.7
Powiem wam szczerze, że nie mam pomysłu jak to zrobić :) Zapewne proste to będzie, pewnie dlatego.
Żeby była jasność: nie chcę gotowca, proszę o nakierowanie na metodę jak to osiągnąć, jak napotkam później problemy, to będę pytał.
mariaczi
Member
Posty: 1343
Rejestracja: 08 lutego 2008, 12:58
Lokalizacja: localhost@śląskie

Post autor: mariaczi »

Algorytmicznie widziałbym to tak:
1. Wyszukuję elementy z kolumny drugiej, które się powtarzają
2. Zapamiętuję indeksy (miejsca) wystąpień tych elementów
3. Sprawdzam, co jest na zapamiętanych miejscach w kolumnie pierwszej (porównanie) i podejmuję odpowiednie działanie
Czocher
Beginner
Posty: 140
Rejestracja: 26 maja 2007, 23:19

Post autor: Czocher »

Jeżeli chcesz sprawić, by elementy stały się unikalne to warto spróbować przejścia przez "set". Set automatycznie przerobi ci listę nieunikalnych elementów na listę unikalnych elementów, musisz tylko odpowiednio opracować jak połączyć ze sobą kolumny etc.
ODPOWIEDZ