Strona główna Polish Python Coders Group
   Strona główna   Pomoc Zaloguj się Rejestracja  
Witamy, Gość. Zaloguj się lub zarejestruj.
Czy dotarł do Ciebie email aktywacyjny?

Zaloguj się podając nazwę użytkownika, hasło i długość sesji

Aktualności:
Szukaj Szukaj
Strony: [1]   Do dołu
Drukuj
Wątek: Jak poprawnie wykonać takie sortowanie...?  (Przeczytany 148 razy)
« : 21:04 17/01/19 »
siara39 Offline
Hello World!

Zobacz profil
*

Reputacja: 0
Wiadomości: 1


Cześć wszystkim,

mam prośbę. Otóż dzisiaj próbowałem posortować dokument o następującej strukturze:

ChipID,ADC0M,ADC0B
1,2.03762,-298.715
2,2.04464,-303.419
3,2.04532,-330.04
4,2.03106,-322.272
5,2.01735,-321.553
6,2.02698,-325.853
7,2.06824,-347.39
8,2.01358,-301.412
9,2.0348,-329.537
10,2.0604,-335.096
11,2.0148,-304.496
12,2.05239,-344.262
.
.
.
6069,2.0678,-345.678


Kod, który popełniłem wygląda następująco:

Kod
import csv
import itertools
chipID=[5932,8]
#chipID.sort()  <-- :P (PROSZĘ MIEĆ NA UWADZE)
#print(chipID)
#print(len(chipID))
a=0
with open('/home/marek/Desktop/Python_nauka/read_from_file/vfat3b_calInfo_production3.csv') as csvfile:
   reader = csv.DictReader(csvfile)
   for element in chipID:
       #print(element)
       for row in reader:
           if row['ChipID']==str(chipID[a]):
               print(row['ChipID'],row['ADC0M'],row['ADC0B'])
               a=a+1
 


Problem, z którym się borykam wygląda następująco, otóż program działa, tj. wypluwa wszystkie dane jak należy pod warunkiem, zastosowania sortowania listy "chipID".

Jednakowoż, zależy mi an tym, żeby zachowana została kolejność z listy chipID przy porównywaniu elementu z kluczem. Czy ktoś z was sznowni koledy/koleżanki ma pomysł jak należałoby to sortowanie po słowniku wykonać?

Pozdrawiam!
Zapisane
« Odpowiedz #1 : 22:47 19/01/19 »
raydeal Offline
Professional Python User

Zobacz profil
***

Reputacja: 80
Wiadomości: 476


Są dwa rozwiązania:
1. Wczytać wszystkie dane z pliku do słownika którego kluczami są ChipID z pliku i potem pobierać dane po kluczu ze słownika - rozwiązanie szybsze ale zużywa więcej pamięci niż 2gie.
2. Dla każdego elementu z listy ChipID trzeba wrócić na "początek pliku" i odczytywać go od początku w celu wyszukania elementu

ChipID jest słabą nazwą dla listy jeśli taka sama nazwa jest nazwą nagłówka w pliku, która też pojawia się w słowniku po pobraniu wiersza.

"reader" jest iteratorem, który za każdym odwołaniem do niego zwraca kolejny wiersz aż do ostatniego i wygląda na to że nie ma innej możliwości powrócenia na początek jak pobranie jeszcze raz tego iteratora. Więc jest to kolejny argument przemawiający za rozwiązaniem 1 w którym dane z pliku są odczytane raz a potem z nich tylko korzystasz.
Zapisane
Strony: [1]   Do góry
Drukuj
Skocz do:  

© 2007 - 2019 Polish Python Coders Group
Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines | Theme by PixelSlot