[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