[Python-es] Re: Aniadir mas de un elemento a un diccionario a la vez

Chema Cortés chemacortes en wanadoo.es
Mar Jul 23 04:12:09 CEST 2002


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

El Lun 22 Jul 2002 21:00, Hernan Martinez Foffani escribió:

> otra aproximación al problema:
> >>> dic_1 = {'a':3, 'b':33}
> >>> dic_2 = {'c':4, 'd':404}
> >>> lista = dic_1.items()
> >>> lista.extend(dic_2.items())
> >>> nuevo = dict(lista)
> >>> nuevo
>
> {'a': 3, 'c': 4, 'b': 33, 'd': 404}

Existe un pequeño problema cuando ambos diccionarios tengan claves comunes. No 
queda claro, al invocar el constructor del dict, qué pasaría en estos casos. 
He hecho la prueba, y no me da error. Las claves comunes cogen el último 
valor que tenga el item en la lista:

>>> d1={'a':1,'b',2}
>>> d2={'b':3,'c':4}
>>> dict(d1.items()+d2.items())
{'a': 1, 'c': 4, 'b': 3}
>>> dict(d2.items()+d1.items())
{'a': 1, 'c': 4, 'b': 2}

Utilizando un bucle controlas mejor qué valor se coge cuando hay claves 
duplicadas.

Pero lo mejor es utilizar el método "update":

>>> d1.update(d2)
>>> d1
{'a': 1, 'c': 4, 'b': 3}


Saludos,
- -- 
Chema Cortes (chemacortes en wanadoo.es) | LinuxUser#142755 - SuSE Linux 8.0
  ZARALINUX  http://www.zaralinux.org | "La ignorancia se apodera de quien
    PYTANDO  http://pytando.sf.net    |     se contenta con lo que sabe"
      PGPKEY: mailto:chemacortes en wanadoo.es?subject=__PGPKEY__

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org

iD8DBQE9PLt5HLTQrABk8H0RAtxzAKDJQj8bXDUMlgFUc2m8fI1BkKP3+wCdGElQ
IAWs3rX9q/QzCTFKSMSDbu0=
=RS6P
-----END PGP SIGNATURE-----


Más información sobre la lista de distribución Python-es