[PIPython] confronto tra dizionari

Alex Martelli aleaxit
Ven 19 Nov 2004 15:16:43 CET


On 2004 Mar 15, at 18:20, ciccio a unical.it wrote:

>
> Salve ragazzi,
> dato che mi sono incartato come al solito, cerco se possibile qualche 
> vostro
> suggerimento sul seguente problema.
> Ho uno script che legge files in input, tutti dello stesso formato, 
> solo che
> ciascuno contiene dei valori numerici differenti.
> Dopo la lettura dei files, per ognuno di essi ottengo un dizionario 
> del tipo:
>
> {('4', '8'): '0.1', ('3', '7'): '0.1', ('2', '6'): '0.1', ('1', '5'): 
> '0.1'}
> {('4', '8'): '0.2', ('3', '9'): '0.2', ('2', '6'): '0.2', ('1', '5'): 
> '0.2'}
>
> Cio' che vorrei fare, e non so se possibile, e' raggruppare le 
> informazioni in
> un unico dizionario del tipo:
>
> {('4','8'):['0.1','0.2'], ('3', '7'):['0.1', '-'], ('3', 
> '9'):['-','0.2'],
> ('2', '6'):['0.1','0.2'], ('1', '5'):['0.1','0.2']}
>
> E' una cosa fattibile? In effetti dovrei confrontare chiavi di 
> differenti
> dizionari e vedere dove e' la stessa ed eventualmente aggiungere il
> corrispondente valore o in alternativa aggiungere il simbolo "-".
>
...e quindi, il *CONFRONTO* che citi nel subject non ha assolutamente 
niente a che vedere con quel che intendi fare.  Quindi non si capisce 
bene il perche` dello strano subject che hai scelto!  Mah... comunque 
e` ovviamente banale:

def non_est_un_confronto_manco_per_nulla(d1, d2):
     rd = {}
     for k in d1:
         rd[k] = [d1[k], d2.get(k, '-')]
     for k in d2:
         if k not in rd:
             rd[k] = ['-', d2[k]]
     return rd

E` un particolare tipo di "fusione", ovvero "merge", comunque davvero 
banale da realizzare in Python.


Alex




More information about the Python mailing list