Witam. Mam plik .txt zawiera kilkaset linii nic nie znaczących słów, i muszę policzyć te linie które nie zawierają duplikatów. Na początku myślałem o wpisywanie je w linie, i porównywanie ich z tą samą zmienną przekształconą w set. Ale to kilka godzin pracy a według zadania można to zrobić w miarę szybko. Jest jakiś sposób by Python znalazł te linie i policzył
- Rejestracja:ponad 6 lat
- Ostatnio:prawie 6 lat
- Postów:37
0
A nie wymagało by to refaktoryzacji linii? Trzeba każde słowo oznaczyć cudzysłowami inaczej python nie będzie tego obsługiwać. Trzeba by kopiować, refaktoryzować, sprawdzać, i od nowa.

lion137
Linie będą zczytane, jako string. Jak wyglądaja te dane?
szopen469
ania anna kasia agaa
piort jacek gacek wacek
i tak kilkaset linijek
- Rejestracja:ponad 6 lat
- Ostatnio:ponad rok
0
Możesz napisać ten program dużo lepiej:
> time python3 szopen.py
923800
5.58user 0.40system 0:06.00elapsed 99%CPU (0avgtext+0avgdata 852240maxresident)k
...
> time python3 mozg.py <big10.txt
923800
4.85user 0.02system 0:04.89elapsed 99%CPU (0avgtext+0avgdata 6652maxresident)k
...
>
I tradycyjnie, jedna linia AWK:
> time awk '{ delete a; for (i = 1; i <= NF; ++i) if (a[$i]++) next; ++c }; END { print 0 + c }' <big10.txt
923800
1.94user 0.02system 0:01.97elapsed 99%CPU (0avgtext+0avgdata 944maxresident)k
...
>
edytowany 1x, ostatnio: Mózg
Szczerze to zielonego pojęcia nie mam co ten skrypt ma zdziałać.

Dokładnie to samo, tylko szybciej ;P
Zasadniczo przetworzenia tego co mam trwa sekundę. Przy BigData może ma to znaczenie. Ja wątpię żebym zobaczył różnice, a szczerze nie rozumiem z tego skryptu nic
Takie zadania dostaje się na screeningach i na rozgrzewkę podczas interviews. Albo zaczniesz myśleć, albo u szczytu kariery będziesz pracować w czwartoligowcu zarabiając niewiele ponad średnią krajową. Unikaj wczytywania całych plików do pamięci. Unikaj wpisywania nazw plików na sztywno. Unikaj śmieciowych nazw jak
data
, jeżeli wiesz czym dane są – w przypadku Twojego programu są to rekordy i pola/linie i słowa. len(xs) == len(set(xs))
nie jest optymalnym rozwiązaniem.
Programowaniem zajmuje się ja wiem. Pół roku. Ja na serio nie rozumiem co tam jest napisane. Ja wiem że moje rozwiązanie nie jest optymalne. Ale dla większych ilości danych. W przypadku małego pliku jedynie 500linii nie sprawia to problemu. KISS. Sprawdza się.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.