Python – Diccionario plano con lista

Dada una lista y un diccionario, aplanar el diccionario con claves y valores en la posición del elemento disponible de la clave en la lista.

Entrada : test_list = [“Gfg”, “is”, “Best”, “For”, “Geeks”], subs_dict = {“Gfg”: 7}
Salida : [‘Gfg’, 7, ‘is’, ‘Best ‘, ‘For’, ‘Geeks’]
Explicación : «Gfg» se reemplaza, seguido de su valor en el diccionario.

Entrada : test_list = [“Gfg”, “is”, “Best”, “For”, “Geeks”], subs_dict = {“gfg”: 7, “best”: 8}
Salida : [‘Gfg’, ‘is ‘, ‘Best’, ‘For’, ‘Geeks’]
Explicación : No hay reemplazo. Sin valores coincidentes.

Método n.º 1: usar la comprensión de listas + get()

La combinación de las funcionalidades anteriores se puede utilizar para resolver este problema. En esto, agregamos toda la clave, si está presente, verificando usando get(), junto con los valores en la lista.

Python3

# Python3 code to demonstrate working of 
# Flatten Dictionary with List
# Using get() + list comprehension
  
# initializing list
test_list = ["Gfg", "is", "Best", "For", "Geeks"]
  
# printing original list
print("The original list : " + str(test_list))
  
# initializing subs. Dictionary
subs_dict = {"Gfg" : 7, "Geeks" : 8}
  
# get() to perform presence checks and assign value
temp = object()
res = [ele for sub in ((ele, subs_dict.get(ele, temp))
       for ele in test_list) for ele in sub if ele != temp]
          
# printing result 
print("The list after substitution : " + str(res))
Producción

The original list : ['Gfg', 'is', 'Best', 'For', 'Geeks']
The list after substitution : ['Gfg', 7, 'is', 'Best', 'For', 'Geeks', 8]

Método #2: Usar chain.from_iterable() + comprensión de lista 

Esta es otra forma más en la que se puede realizar esta tarea. En esto, formamos una lista de pares de valores clave y agregamos si está presente y, si no, retenemos el elemento. A continuación, el aplanamiento de las listas de valores clave se realiza mediante chain.from_iterable().

Python3

# Python3 code to demonstrate working of 
# Flatten Dictionary with List
# Using chain.from_iterable() + list comprehension 
from itertools import chain
  
# initializing list
test_list = ["Gfg", "is", "Best", "For", "Geeks"]
  
# printing original list
print("The original list : " + str(test_list))
  
# initializing subs. Dictionary
subs_dict = {"Gfg" : 7, "Geeks" : 8}
  
temp = ([ele, subs_dict[ele]] if ele in subs_dict 
                  else [ele] for ele in test_list)
  
# chain.from_iterable() for flattening 
res = list(chain.from_iterable(temp))
          
# printing result 
print("The list after substitution : " + str(res))
Producción

The original list : ['Gfg', 'is', 'Best', 'For', 'Geeks']
The list after substitution : ['Gfg', 7, 'is', 'Best', 'For', 'Geeks', 8]

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 *