Python: índice de filtro de valores similares

A veces, mientras trabajamos con los diccionarios de Python, podemos tener un problema en el que necesitamos extraer todos los valores en las listas de valores que coinciden con los índices filtrados de los valores coincidentes de la lista con alguna clave en el diccionario. Este tipo de aplicación puede ocurrir en el desarrollo web.

Entrada : test_dict = {“Gfg”: [4, 5, 7], “es”: [5, 6, 8], “mejor”: [10, 7, 4]}
Salida : {“Gfg”: [4 , 5, 7], “es”: [5, 6, 8], “mejor”: [10, 7, 4]}

Entrada : test_dict = {“Gfg”: [4, 20, 5, 7], “es”: [5, 17, 6, 8], “mejor”: [10, 11, 7, 4]}
Salida : { ‘Gfg’: [4, 5, 7], ‘es’: [5, 6, 8], ‘mejor’: [10, 7, 4]}

Método n.º 1: Usar bucle +zip() + defaultdict()
La combinación de los métodos anteriores se puede usar para resolver este problema. En esto, inicializamos el dictamen predeterminado con la lista, enlazamos todas las claves con zip() y usamos loop para agregar los elementos necesarios.

# Python3 code to demonstrate working of 
# Filter index similar values
# Using loop + zip() + defaultdict()
from collections import defaultdict
  
# initializing dictionary
test_dict = {"Gfg" : [1, 4, 5, 6, 7], "is" : [5, 6, 8, 9, 10], 
                                 "best" : [10, 7, 4, 11, 23]}
  
# printing original dictionary
print("The original dictionary : " + str(test_dict))
  
# initializing value list 
filt_list = [4, 5, 7]
  
# Filter index similar values
# Using loop + zip() + defaultdict()
res = defaultdict(list)
  
for x, y, z in zip(test_dict['Gfg'], test_dict['is'], test_dict['best']):
    if x in filt_list:
        res['Gfg'].append(x)
        res['is'].append(y)
        res['best'].append(z)
      
# printing result 
print("The filtered dictionary : " + str(dict(res))) 
Producción :

El diccionario original: {‘Gfg’: [1, 4, 5, 6, 7], ‘es’: [5, 6, 8, 9, 10], ‘mejor’: [10, 7, 4, 11, 23]}
El diccionario filtrado: {‘Gfg’: [4, 5, 7], ‘is’: [6, 8, 10], ‘best’: [7, 4, 23]}

Método n.º 2: Uso de comprensión de lista + comprensión de diccionario
La combinación de las funcionalidades anteriores se puede utilizar para resolver este problema. En esto, extraemos índices usando comprensión de lista y el filtrado de otras claves se realiza usando comprensión de diccionario.

# Python3 code to demonstrate working of 
# Filter index similar values
# Using list comprehension + dictionary comprehension
  
# initializing dictionary
test_dict = {"Gfg" : [1, 4, 5, 6, 7], "is" : [5, 6, 8, 9, 10], 
                                 "best" : [10, 7, 4, 11, 23]}
  
# printing original dictionary
print("The original dictionary : " + str(test_dict))
  
# initializing value list 
filt_list = [4, 5, 7]
  
# Filter index similar values
# Using list comprehension + dictionary comprehension
temp = [test_dict['Gfg'].index(idx) for idx in filt_list]
res = {key : [test_dict[key][idx] for idx in temp] for key in test_dict.keys()}
      
# printing result 
print("The filtered dictionary : " + str(res)) 
Producción :

El diccionario original: {‘Gfg’: [1, 4, 5, 6, 7], ‘es’: [5, 6, 8, 9, 10], ‘mejor’: [10, 7, 4, 11, 23]}
El diccionario filtrado: {‘Gfg’: [4, 5, 7], ‘is’: [6, 8, 10], ‘best’: [7, 4, 23]}

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 *