-
python
ciao a tutti sono nuova nel forum e ho iniziato da poco a programmare.
ho un problema.
io ho un dizionario e devo sommare i valori che hanno le stesse chiavi.
come faccio?cioè mi spiego meglio.
'ar' : 78965, 'we' : 456,'fr' : 7843,'ar' : 532, 'uj' : 5467, 'fr' : 4678,'un' : 743,'ar' : 36,....
quindi devo fare in modo di avere:
'ar' : 79533,'we' : 456,'fr' : 12521,'uj' : 5467,'un':743,.....
non posso richiamare ad uno ad uno le chiavi perchè sono tante...
spero in un aiuto.
ciao
-
ma il dizionario è unico?
se è così non è possibile avere chiavi duplicati, se per esempio hai dic['ar']=78965 e poi assegni ad ar un nuovo valore, per esempio dic['ar']=532, il nuovo valore sostituirà il vecchio
l'unica possibilità è eseguire le somme in fase di assegnazione
per esempio
if 'ar' in dic: dic['ar'] += nuovo_valore
else: dic['ar'] = valore_iniziale
-
ti mando il codice:
def ala(a):
d={}
for lettera in seq:
valore=seq.count(lettera)
d[lettera]=valore
return d
lv2=de.values()
for seq in de.values(): # per ogni città in una lista di cittasw2=ala(lv2)
quindi ho diversi dizionari per ogni seq e devo avere alla fine un unico dizionario che ha per ogni chiave uguale la somma dei valori.
qualche idea?:(
-
def ala(a): d={} for lettera in seq: valore=seq.count(lettera) d[lettera]=valore return d lv2=de.values() for seq in de.values(): # per ogni città in una lista di citta sw2=ala(lv2)
se ho ben capito il ciclo fuori dalla funzione enumera tutti valori contenuti nel dizionario de e li pone uno alla volta in seq, poi all'interno della funzione ala enumera tutti i caratteri contenuti nella stringa seq e assegna a valore il numero di istanze di lettera presenti nella stringa seq
a questo punto registra questo valore nel dizionario d
l'unica modifica da fare è questa
for lettera in seq: valore=seq.count(lettera) if lettera in d: d[lettera] += valore else: d[lettera] = valore
in pratica quello che ho fatto è dire se la lettera è presente in d allora devi sommare il valore precedente a quello attuale, altrimenti devi aggiungere lettera a d
-
praticamente io ho una lista (lv2) di seq.
nella mia funzione faccio un solo dizionario per ogni sequenza.
poi applico la funzione a tutte le sequenze così ottengo diversi dizionari che possono avere la stessa chiave.
facendo come mi hai detto tu mi somma i valori nella stessa sequenza di un solo dizionario. io devo sommare i valoridei diversi dizionari che hanno la chiave comune.
-
@swem23 said:
praticamente io ho una lista (lv2) di seq.
nella mia funzione faccio un solo dizionario per ogni sequenza.
poi applico la funzione a tutte le sequenze così ottengo diversi dizionari che possono avere la stessa chiave.
facendo come mi hai detto tu mi somma i valori nella stessa sequenza di un solo dizionario. io devo sommare i valoridei diversi dizionari che hanno la chiave comune.ho capito.....
dunque ogni seq è una stringa esatto? e quando dici di voler sommare i valori che la stessa chiave comune, per chiave intendi le lettere costruite estraendole dalle varie seq?
se è così basta creare un dizionario globale d definendolo nel corpo centrale del programma....in questo modo man mano che processi le varie seq, i risultati finiranno tutti in un unico dizionario