Forum
>>
Principianti
>>
Esercizio università
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
Scritto da A |
2018-06-24 16:33:43 - Esercizio università
|
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à |
|
Scritto da stix77 |
2018-06-25 00:06:03 - Re: Esercizio università
|
Ciao, puoi fare così
from collections import Counter prodottiDifettatiPerGiorno = ["pane","latte","pane","ottone","latte"] print(Counter(prodottiDifettatiPerGiorno)) |
|
Scritto da A |
2018-06-25 10:01:26 - Re: Esercizio università
|
Ti ringrazio per l'aiuto, solamente che dovrei risolvere l'esercizio, usando, ad esempio:
def Esercizio(prodottiDifettatiPerLinea): medie = {} return medie |
|
Scritto da stix77 |
2018-06-25 17:10:54 - Re: Esercizio università
|
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ì? |
|
Scritto da A |
2018-06-25 17:18:54 - Re: Esercizio università
|
Si, ti ringrazio, potrebbe andare. Ora devo solo capire come scrivere ciò che mi hai detto usando le singole funzioni. Grazie per la disponibilità
|
|
Scritto da stix77 |
2018-06-25 21:46:47 - Re: Esercizio università
|
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 --- |
|
Scritto da A |
2018-07-13 15:19:29 - Re: Esercizio università
|
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 |
|
Scritto da stix77 |
2018-07-16 22:13:42 - Re: Esercizio università
|
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.