Witam.
Mam pytanie. Potrzebuję napisać aplikację usuwającą duplikaty z pliku po porównaniu go z drugim plikiem. Plik "A" to baza numerów np. PESEL a plik "B" to baza z numerami do porównania. Z bazy "B" muszę usunąć numery znajdujące się już w bazie "A" i po usunięciu dopisać nowe do bazy "A". Zaczynam dopiero programować w Pythonie i nie bardzo wiem jak się za to zabrać :)
Ma ktoś jakiś pomysł na efektywny program (baza będzie rosła i będzie miała dużą liczbę numerów).
Rozumiem, że ta baza to konkretnie muszą być pliki tekstowe i w każdej linii masz numer PESEL tak?
anonimowy napisał(a):
Rozumiem, że ta baza to konkretnie muszą być pliki tekstowe i w każdej linii masz numer PESEL tak?
Dokładnie tak
-
najpierw stworz plikA i plikB - mozliwosci jest wiele w zaleznosci o ilosc i tego jak te dane maja wygladac
np; json, xml , yaml, baza danych, csv, jsonlines , txt, ini czy cokolwiek innego. -
stworz "program" ktory wczytuje zawartosc plikow A i B do jakichs struktur danych wszystko zaleznie jaka beda mialy strukture danych te twoje dane w plikach.
Potem sobie mozesz porownywac to co masz na milion sposobow.
Jest pewne, że pliki będą csv ewentualnie txt. A jeśli chodzi o tą strukturę to co wykorzystać najlepiej, bo ten PlikA czyli baza będzie miał w przyszłości ponad 100 tys rekordów.
Generalnie w każdym języku robisz to mniej więcej tak samo. Otwierasz plik A, wrzucasz wszystko do czegoś w stylu HashSet (jakkolwiek to się nazywa w danym języku), i potem czytasz czytasz drugi plik, wywalasz wszystko co jest w secie (w pseudokodzie cos w stylu: ret = []; foreach (el in B) if !A.contains(el) ret.push(el)
). Nie rozumiem po co później je dopisywać do A skoro A już je zawiera.
Źle napisałem. Mają być dopisane te których nie ma, aby baza zawierała nowych Klientów.
@pajzano78: jak użyjesz HashSet (odpowiednika w pythonie) to wystarczy dodać, nie da się dodać duplikatów do HashSeta (zgodnie z ustaloną funkcją hashującą i testującą, która dla stringów z reguły działa zgodnie z oczekiwaniami w każdym języku)
Ok. Zobaczymy co z tego wyjdzie bo nie znam za bardzo Pythona ale wiem że jest to język do takich działań. Poczytam o Hashset i mam nadzieje, że uda się stworzyć optymalny kod.
W pythonie sa sety tj: 'set'. Poczytaj w dokumentacji jak to dziala i jakie metody sa wbudowane.
Te sety to tak naprawde zbiory wiec musisz dobrac odpowiednie operacje na zbiorach zeby wyselekcjonowac to co chcesz.
Wszystko masz w dokumentacji tu sa linki:
https://docs.python.org/2/library/sets.html
https://docs.python.org/3.6/library/stdtypes.html?highlight=set#set