Python – Combina diccionario con prioridad

A veces, mientras trabajamos con datos de diccionario, podemos tener problemas en los que necesitamos combinar dos diccionarios. Este es un problema muy común. Pero una variación de esto puede ser combinar diccionarios y dar prioridad a un diccionario en particular si ambas claves chocan en los diccionarios. Analicemos ciertas formas en que se puede realizar esta tarea.

Entrada : test_dict1 = {‘Gfg’: 6, ‘es’: 15, ‘mejor’: 13}
test_dict2 = {‘Gfg’: 8, ‘es’: 10}
Salida : {‘Gfg’: 8, ‘mejor’ : 13, ‘es’: 10}

Entrada : test_dict1 = {‘Gfg’: 6}
test_dict2 = {‘Gfg’: 8}
Salida : {‘Gfg’: 8}

Método n.º 1: Uso copy()del bucle +
La combinación de las funcionalidades anteriores se puede utilizar para resolver este problema. Esta es la forma bruta en la que se puede resolver este problema. En esto, realizamos copy() para copiar en profundidad los valores del diccionario y luego anulamos los valores usando el diccionario de prioridad.

# Python3 code to demonstrate working of 
# Combine dictionary with priority
# Using loop + copy()
  
# initializing dictionaries
test_dict1 = {'Gfg' : 1, 'is' : 2, 'best' : 3}
test_dict2 = {'Gfg' : 4, 'is' : 10, 'for' : 7, 'geeks' : 12}
  
# printing original dictionaries
print("The original dictionary is 1 : " + str(test_dict1))
print("The original dictionary is 2 : " + str(test_dict2))
  
# declaring priority order
prio_dict = {1 : test_dict2, 2: test_dict1}
  
# Combine dictionary with priority
# Using loop + copy()
res = prio_dict[2].copy()
for key, val in prio_dict[1].items():
    res[key] = val
      
# printing result 
print("The dictionary after combination : " + str(res)) 
Producción :

El diccionario original es 1 : {‘is’: 2, ‘best’: 3, ‘Gfg’: 1}
El diccionario original es 2 : {‘for’: 7, ‘is’: 10, ‘geeks’: 12, ‘Gfg’: 4}
El diccionario después de la combinación: {‘for’: 7, ‘is’: 10, ‘best’: 3, ‘geeks’: 12, ‘Gfg’: 4}

Método #2: Usando** operator
este es un nuevo método para resolver este problema, podemos enlazar ambos diccionarios, el diccionario enlazado en segundo lugar tiene prioridad sobre las claves del diccionario inicial.

# Python3 code to demonstrate working of 
# Combine dictionary with priority
# Using ** operator
  
# initializing dictionaries
test_dict1 = {'Gfg' : 1, 'is' : 2, 'best' : 3}
test_dict2 = {'Gfg' : 4, 'is' : 10, 'for' : 7, 'geeks' : 12}
  
# printing original dictionaries
print("The original dictionary is 1 : " + str(test_dict1))
print("The original dictionary is 2 : " + str(test_dict2))
  
# declaring priority order
prio_dict = {1 : test_dict2, 2: test_dict1}
  
# Combine dictionary with priority
# Using ** operator
res = {**prio_dict[2], **prio_dict[1]} 
      
# printing result 
print("The dictionary after combination : " + str(res)) 
Producción :

El diccionario original es 1 : {‘is’: 2, ‘best’: 3, ‘Gfg’: 1}
El diccionario original es 2 : {‘for’: 7, ‘is’: 10, ‘geeks’: 12, ‘Gfg’: 4}
El diccionario después de la combinación: {‘for’: 7, ‘is’: 10, ‘best’: 3, ‘geeks’: 12, ‘Gfg’: 4}

Publicación traducida automáticamente

Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *