Forum >> Principianti >> Esercizio università

Pagina: 1

Buonasera, avrei bisogno di un aiuto riguardo questo esercizio che non so come impostare:
Si scriva una funzione che prendendo una lista di elementi di un magazzino ne faccia un report sulla giacenza# Esempio
# prodottiDifettatiPerGiorno = [pane,latte,pane,ottone,latte]
# output = {pane: 2, latte: 2, ottone: 1}
Vi ringrazio per la disponibilità
Ciao, puoi fare così


from collections import Counter
prodottiDifettatiPerGiorno = ["pane","latte","pane","ottone","latte"]
print(Counter(prodottiDifettatiPerGiorno))


Ciao, puoi fare così


from collections import Counter
prodottiDifettatiPerGiorno = ["pane","latte","pane","ottone","latte"]
print(Counter(prodottiDifettatiPerGiorno))



Ti ringrazio per l'aiuto, solamente che dovrei risolvere l'esercizio, usando, ad esempio:

def Esercizio(prodottiDifettatiPerLinea):
medie = {}
return medie
ah ok, non puoi usare una funzione già completa



niente, io lo farei così, farei un ciclo for che prenda in rassegna tutti gli elementi della lista

se la stringa in questione è nuova crea una nuova posizione e aumenta il contatore di 1, altrimenti se la stringa è già presente aumenta il contatore e basta

alla fine del ciclo for si avranno quindi tutti gli oggetti istanziati col numero di presenze e si crea quindi infine il dizionario




dici che potrebbe andare così?
ah ok, non puoi usare una funzione già completa



niente, io lo farei così, farei un ciclo for che prenda in rassegna tutti gli elementi della lista

se la stringa in questione è nuova crea una nuova posizione e aumenta il contatore di 1, altrimenti se la stringa è già presente aumenta il contatore e basta

alla fine del ciclo for si avranno quindi tutti gli oggetti istanziati col numero di presenze e si crea quindi infine il dizionario




dici che potrebbe andare così?

Si, ti ringrazio, potrebbe andare. Ora devo solo capire come scrivere ciò che mi hai detto usando le singole funzioni. Grazie per la disponibilità :) :) :)
ciao, io lo farei così
def Esercizio(prodottiDifettatiPerLinea): 
    medie = {}
    for i in prodottiDifettatiPerLinea:
        if i not in medie:
            medie[ i ] = 1
        else:
            medie[ i ] = medie[ i ] + 1
    return medie




prodottiDifettatiPerLinea = ["pane","latte","pane","ottone","latte","pane","ottone","pane","ottone","pere"]
print(Esercizio(prodottiDifettatiPerLinea))


se hai problemi di comprensione dimmi cosa non ti quadra

come ti dicevo prima il ciclo for prende in rassegna tutti gli elementi della lista

se l'elemento non è nel dizionario, lo aggiunge e mette il contatore a 1

se l'elemento è nel dizionario, va a prendere la chiave vecchia e aggiunge 1




il risultato è questo

{'pane': 4, 'latte': 2, 'ottone': 3, 'pere': 1}



--- Ultima modifica di stix77 in data 2018-06-25 21:58:19 ---
ciao, io lo farei così
def Esercizio(prodottiDifettatiPerLinea): 
    medie = {}
    for i in prodottiDifettatiPerLinea:
        if i not in medie:
            medie[ i ] = 1
        else:
            medie[ i ] = medie[ i ] + 1
    return medie




prodottiDifettatiPerLinea = ["pane","latte","pane","ottone","latte","pane","ottone","pane","ottone","pere"]
print(Esercizio(prodottiDifettatiPerLinea))


se hai problemi di comprensione dimmi cosa non ti quadra

come ti dicevo prima il ciclo for prende in rassegna tutti gli elementi della lista

se l'elemento non è nel dizionario, lo aggiunge e mette il contatore a 1

se l'elemento è nel dizionario, va a prendere la chiave vecchia e aggiunge 1




il risultato è questo

{'pane': 4, 'latte': 2, 'ottone': 3, 'pere': 1}



--- Ultima modifica di stix77 in data 2018-06-25 21:58:19 ---
Ti ringrazio. Ho un altro problema. Se, partendo da questo dizionario il mio output dovesse essere l'elemento che si trova in maggior quantità, in questo caso {"pane":4} come potrei fare?

Io avevo pensato di inserire un secondo for facendo nel seguente modo, ma non viene:

counter=0

b=""

for elemento in medie:

if medieelemento>counter:

counter=medieelemento

b=elemento

medie={counter,b} #questa parte penso sia veramente errata



ciao alessia, se vuoi ordinare il dizionario devi aggiungere un pezzo di script in fondo
def Esercizio(prodottiDifettatiPerLinea): 
    medie = {}
    for i in prodottiDifettatiPerLinea:
        if i not in medie:
            medie[ i ] = 1
        else:
            medie[ i ] = medie + 1
    return medie




prodottiDifettatiPerLinea = ["pane","latte","pane","ottone","latte","pane","ottone","pane","ottone","pere"]
print("non ordinato")
print(Esercizio(prodottiDifettatiPerLinea))

s = [(keys, (Esercizio(prodottiDifettatiPerLinea))[ keys ]) for keys in sorted((Esercizio(prodottiDifettatiPerLinea)), key=(Esercizio(prodottiDifettatiPerLinea)).get, reverse=True)]
medie = {}
for keys, values in s:
    medie[ keys ] = values
print("\nordinato")
print(medie)


è un po' difficile da seguire ma non faccio altro che copiare quello che c'è scritto qui

https://stackoverflow.com/questions/20944483/python-3-sort-a-dict-by-its-values





ti torna tutto o c'è qualche riga in particolare che è ostica?


Pagina: 1



Esegui il login per scrivere una risposta.