Intersección del diccionario de Python

Migel Hewage Nimesha 15 febrero 2024
  1. Diccionario de Python
  2. Use Comprensión de diccionario para cruzar dos diccionarios en Python
  3. Use el operador bit a bit & para cruzar dos diccionarios en Python
  4. Use el método Set intersection() para intersectar dos diccionarios en Python
  5. Métodos utilizados en la intersección de varios diccionarios en Python
  6. Conclusión
Intersección del diccionario de Python

Este artículo discutirá los diferentes métodos para realizar intersecciones en dos o múltiples diccionarios en Python.

Diccionario de Python

Los datos se mantienen en un formato de par clave-valor utilizando un diccionario de Python y es una estructura de datos mutable. El tipo de datos del diccionario de Python puede imitar arreglos de datos del mundo real donde existe un cierto valor para una clave dada.

Las claves y los valores son los elementos utilizados para definir el diccionario:

  • Las llaves deben ser un solo elemento.
  • El valor puede ser de cualquier tipo, como una lista, un número entero, una tupla, etc.

Un diccionario es, en otras palabras, un grupo de pares clave-valor donde el valor puede ser cualquier objeto de Python. Las claves, por el contrario, son objetos de Python inmutables, como cadenas, tuplas o números.

Se pueden usar múltiples pares clave-valor para construir un diccionario, con dos puntos separando cada clave de su valor antes de que cada par esté contenido entre corchetes.

La sintaxis es la siguiente:

dict = {"Name": "John", "Age": 18, "Grade": "13"}

Veamos un ejemplo:

Ejemplo de diccionario de Python

Use Comprensión de diccionario para cruzar dos diccionarios en Python

Podemos usar diferentes enfoques para realizar la intersección de diccionarios a través de sus claves en Python.

  • Primero, inicialice los diccionarios originales en dict01 y dict02 para empezar.
  • Imprime los diccionarios originales.
  • A continuación, considere la clave de dict01 como k1 y ejecute el bucle for para comprobar si k1 en dict01 existe en dict02. Si tiene la clave común, su valor se inserta en un nuevo diccionario llamado intersección (se puede preferir el diccionario según el requisito).
  • Imprime el nuevo diccionario intersección con las claves comunes y sus valores.

Ejemplo:

# inititializing the dictionaries
dict01 = {"A": 1, "B": 6, "C": 3, "D": 5}
dict02 = {"A": 1, "C": 4, "D": 5, "E": 2}

# printing original dictionary
print("First original dictionary: ", dict01)
print("Second original dictionary: ", dict02)

# performing intersection
intersection = {k1: dict01[k1] for k1 in dict01 if k1 in dict02}

# printing output
print("Intersected Dictionary: ", str(intersection))

Recibirá el resultado que se detalla a continuación si ejecuta el código anterior.

Intersección del diccionario de Python usando la comprensión del diccionario 1

Considere la clave de dict02 como k2. Ejecute el ciclo for para verificar si k2 en dict02 también existe en dict01 siguiendo el mismo código.

Además, si los valores son del tipo cadena:

# inititializing the dictionaries
dict01 = {1: "My", 2: "I", 3: "age"}
dict02 = {1: "name", 2: "live", 4: "year"}

# defining a function to merge strings


def mergeStrings(str01, str02):
    return str01 + " " + str02


# performing intersection
intersectString = {
    k1: mergeStrings(dict01[k1], dict02[k1]) for k1 in dict01.keys() if k1 in dict02
}

# printing output
print(intersectString)

Veamos el resultado del código anterior:

Intersección del diccionario de Python usando la comprensión del diccionario 2

Use el operador bit a bit & para cruzar dos diccionarios en Python

Simplemente filtra las claves comunes y el valor correspondiente de la clave de los diccionarios. Solo filtra claves con el mismo valor, y este enfoque es mucho más simple de entender y aplicar.

  • Primero, configure dict01 y dict02 con los diccionarios originales inicialmente.
  • Imprima los diccionarios originales a continuación.
  • A continuación, convierta los diccionarios dict01 y dict02 al formato de lista utilizando la función items().
  • Luego, realice el AND usando el operador &. Los pares clave-valor comunes se convierten luego en un diccionario usando la función dict() y se almacenan en la nueva intersección del diccionario.
  • Finalmente, imprima el nuevo diccionario.

Ejemplo:

# inititializing dictionary
dict01 = {"A": 1, "B": 6, "C": 3, "D": 5}
dict02 = {"A": 1, "C": 4, "D": 5, "E": 2}

# printing original dictionary
print("First original dictionary: ", dict01)
print("Second original dictionary: ", dict02)

# performing intersection
intersection = dict(dict01.items() & dict02.items())

# printing output
print("Intersected Dictionary", str(intersection))

Recibirá el siguiente resultado si ejecuta el código anterior.

Intersección de diccionario de Python usando bit a bit y operador

Al realizar el operador Bitwise & para la intersección del diccionario de Python, tanto las claves como los valores de las respectivas claves también deben ser iguales.

Use el método Set intersection() para intersectar dos diccionarios en Python

El método set intersección() devuelve un conjunto que está formado por los elementos que están presentes en ambos conjuntos m y n de la siguiente manera:

m = {"A": 1, "B": 6, "C": 3, "D": 5}
n = {"A": 1, "D": 5, "E": 2}

setM = set(m)
setN = set(n)

setM.intersection(setN)

for item in setM.intersection(setN):
    print(item)

Si ejecuta el código de ejemplo anterior, obtendrá los resultados a continuación.

Intersección del diccionario de Python Usando la intersección ()

Métodos utilizados en la intersección de varios diccionarios en Python

Podemos usar tanto el operador bit a bit & como el método Set intersection() para encontrar fácilmente los elementos que se cruzan en varios diccionarios con más codificación.

Usando el operador bit a bit &:

# inititializing dictionary
dict01 = {"A": 1, "B": 6, "C": 3, "D": 5}
dict02 = {"A": 1, "C": 4, "D": 5, "E": 2}
dict03 = {"A": 1, "C": 9, "D": 5, "E": 1}

# printing original dictionary
print("First original dictionary: ", dict01)
print("Second original dictionary: ", dict02)
print("Third original dictionary: ", dict03)

# performing intersection
intersection = dict(dict01.items() & dict02.items() & dict03.items())

# printing output
print("Intersected Dictionary", str(intersection))

Veamos el resultado después de ejecutar el código anterior:

Intersección de diccionarios múltiples de Python usando &

Usando el método Set intersección():

m = {"A": 1, "B": 6, "D": 5, "E": 2}
n = {"A": 1, "D": 5, "E": 2}
t = {"A": 1, "C": 4, "D": 5, "E": 2}

setM = set(m)
setN = set(n)
setT = set(t)

setM.intersection(setN).intersection(setT)

for item in setM.intersection(setN).intersection(setT):
    print(item)

Echemos un vistazo al resultado después de ejecutar el código anterior:

Intersección de diccionarios múltiples de Python usando intersección ()

Conclusión

Para concluir, consideramos formas rápidas y eficientes de realizar intersecciones en dos o varios diccionarios en Python para crear uno nuevo. Puede seleccionar cualquier enfoque que necesite según su preferencia y caso de uso.

Encontramos la intersección de dos o más diccionarios, todos a nivel de claves únicas y pares clave-valor, a veces usando diferentes funciones para las claves en común. Estos métodos ciertamente no son los únicos; puede pensar en más, y quizás se agreguen métodos más explícitos para estas tareas en versiones posteriores de Python.

Aunque casi todos los fragmentos de código propuestos son de una sola línea, todos son claros y elegantes.

Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.

Artículo relacionado - Python Dictionary