En un tutorial anterior aprendimos sobre los diccionarios de Python, y vimos que se consideran conjuntos desordenados con una valor clave
par, donde llaves se utilizan para acceder a los artículos en oposición a la posición, como en las listas, por ejemplo.
En este consejo rápido, les mostraré cómo concatenar (combinar) dos diccionarios juntos..
Digamos que tenemos los siguientes dos diccionarios:
dict1 = 'bookA': 1, 'bookB': 2, 'bookC': 3 dict2 = 'bookC': 2, 'bookD': 4, 'bookE': 5
¿Cómo podemos combinar esos dos diccionarios en un solo diccionario? Una función que podemos usar en este sentido es actualizar ([otro])
. Como se indica en la documentación de Python:
Actualice el diccionario con los pares clave / valor de otro, sobrescribir las claves existentes. Regreso Ninguna
.
actualizar()
acepta otro objeto de diccionario o un iterable de pares clave / valor (como tuplas u otros iterables de longitud dos). Si se especifican argumentos de palabras clave, el diccionario se actualiza con esos pares clave / valor:d.update (rojo = 1, azul = 2)
.
Entonces, para fusionar los dos diccionarios anteriores, podemos escribir lo siguiente:
dict2.update (dict1)
Diga que escribió la siguiente declaración para ver los resultados:
imprimir dict2.update (dict1)
En este caso obtendrás Ninguna
! Esto es porque el actualizar()
La función no devuelve un nuevo diccionario. Para obtener el resultado de la concatenación, simplemente escriba lo siguiente:
imprimir dict2
En cuyo caso, obtendrás la siguiente salida:
'bookA': 1, 'bookB': 2, 'bookC': 3, 'bookD': 4, 'bookE': 5
¿Y si hiciéramos lo siguiente??
dict1.update (dict2) imprimir dict1
En este caso, obtendrás la siguiente salida:
'bookA': 1, 'bookB': 2, 'bookC': 2, 'bookD': 4, 'bookE': 5
Nótese que en el primer caso., dict2.update (dict1)
, actualizamos el diccionario dict2
con los pares clave / valor de dict1
, y sobrescribiendo cualquier clave existente. La clave existente como podemos notar es 'bookC'
, que tendrá el valor 3
En este caso, ya que estamos actualizando con los pares clave / valor de dict1
. Esto será revertido en este último caso., dict1.update (dict2)
, donde estamos actualizando el diccionario dict1
con pares clave / valor de dict2
.
Sin embargo, hay un problema en el uso actualizar()
para fusionar dos diccionarios. El problema radica en el hecho de que el diccionario original puede ser modificado. En otras palabras, en el primer caso, por ejemplo., dict2.update (dict1)
, la versión original de dict2
Podrían modificarse, y en este último caso., dict1.update (dict2)
, la versión original de dict1
podría ser modificado Es decir que puedes usar actualizar()
para combinar dos diccionarios si no está interesado en mantener la versión original del diccionario que necesita actualizar. Por la versión original aquí me refiero a conservar el valor de la clave.
Otro método que puede utilizar para combinar dos diccionarios, donde puede realizar una tarea de este tipo en una sola expresión, es el siguiente:
imprimir dict (dict2, ** dict1)
El resultado de esta declaración es:
'bookA': 1, 'bookB': 2, 'bookC': 3, 'bookD': 4, 'bookE': 5
Así, dict1
anula dict2
. Si queremos dict2
para anular dict1
, nosotros escribimos:
imprimir dict (dict1, ** dict2)
La salida en este caso sería:
'bookA': 1, 'bookB': 2, 'bookC': 2, 'bookD': 4, 'bookE': 5
Volviendo al número anterior de mantener los valores clave, ¿cómo podemos combinar dos diccionarios manteniendo los originales de cada diccionario??
Una solución para esto puede ser la siguiente (tomada de la respuesta en este hilo de StackOverflow):
desde itertools importar cadena desde colecciones import defaultdict dict1 = 'bookA': 1, 'bookB': 2, 'bookC': 3 dict2 = 'bookC': 2, 'bookD': 4, 'bookE': 5 dict3 = defaultdict (lista) para k, v en cadena (dict1.items (), dict2.items ()): dict3 [k] .append (v) para k, v en dict3.items (): imprimir (k, v)
La salida en este caso será:
('bookA', [1]) ('bookB', [2]) ('bookC', [3, 2]) ('bookD', [4]) ('bookE', [5])
Entonces, como puede ver en este consejo rápido, es muy fácil combinar dos diccionarios usando Python, y se vuelve un poco más complejo si queremos conservar los valores de la misma clave en cada diccionario..
Aprende Python con nuestra completa guía de tutoriales de Python, ya sea que estés empezando o seas un programador experimentado que busca aprender nuevas habilidades..