Šta je novo?

Python- Frequency table

vatrogasac53

Slavan
Učlanjen(a)
18.06.2008
Poruke
1,409
Poena
375
Pozdrav, imam zadatak da pretvorim listu ocena u rečnik sa brojem ocena.
Iako sam to uspeo da uradim i dalje mi nije jasno kako zašto je neophodan else deo prilikom računanja (označen dole), pa ako može pomoć oko toga.
Ukoliko ga izostavim vraća mi se prazan rečnik pa me zanima kako ide mehanizam brojanja članova odnosno ocena.
Hvala

Kod:
ocene = ['5+', '5+', '5+', '9+', '10+', '10+', '12+', '12+']


broj_ocena = {}

for x in ocene:
    if x in broj_ocena:
        broj_ocena[x] += 1
    [B]else:
        broj_ocena[x] = 1[/B]
        
print(broj_ocena)
 
ako se ocena nalazi u recniku,dodaj jedan,ako ne,onda je to prva. ne mozes da dodas nesto necemu sto ne postoji.zato ti je potreban taj else,jer to znaci da je to prva od svoje vrste,da ne postoji u recniku,i dodajemo je,svaka sledeca ot te vrste postoji,if je ispunjen i mozes povecati za jedan

Sent from my EML-L29 using Tapatalk
 
Odlično objašnjenje sad mi je jasnije kako mehanizam funkcioniše:)
 
'Pythonic' verzija bi bila da eliminises if, else:

Kod:
try:
   broj_ocena[x] += 1
except KeyError:
   broj_ocena[x] = 1
 
Jeste pitonaški, i dopada mi se i to rešenje, mada se za sada moram držati "školskog" pristupa.
 
'Pythonic' verzija bi bila da eliminises if, else:

Kod:
try:
   broj_ocena[x] += 1
except KeyError:
   broj_ocena[x] = 1

Da ne odvucem raspravu na drugu stranu, ali vec dve godine radim u Pythonu kao glavnom jeziku nakon godina u nekim drugim jezicima i nije mi jasno kako su neke stvari postale "Pythonic". Ne mislim na tebe i tvoj odgovor licno, ali i po knjigama i dok sam radio sa starijim inzenjerima pravilo o exceptionima glasi da ih treba koristiti kada su potrebni ali i neizbezni. Tipa pozivi API-a, neke bibiloteke i slicno, ali ne treba ih koristiti za "biznis" logiku. Meni ovo deluje kao inicijalizacija vezana za algoritam, nekako ne bih to ubacio u except zato sto kljuc u dict-u. My 2 cents. U nekim jezicima je rad sa exception-ima i jako skup. Mada se Python ne koristi zbog performansi.
 
EAFP

Easier to ask for forgiveness than permission. This common Python coding style assumes the existence of valid keys or attributes and catches exceptions if the assumption proves false. This clean and fast style is characterized by the presence of many try and except statements. The technique contrasts with the LBYL style common to many other languages such as C.

Primer pozivanja obj.__contains__ za svaki element liste bi bilo sporije nego da odmah uradis zeljenu stvar. Posebno ako imas puno elemenata i duplikata. Meni licno try, except block deluje self explanatory, odnosno daje jasan odgovor na pocetno pitanje pokretaca teme.
 
Poslednja izmena:
Nazad
Vrh Dno