Python – Filtrar valores de diccionario en diccionario heterogéneo

A veces, mientras trabajamos con diccionarios de Python, podemos tener un problema en el que necesitamos filtrar ciertos valores en función de ciertas condiciones en un tipo particular, por ejemplo, todos los valores menores que K. Esta tarea se vuelve compleja cuando los valores del diccionario pueden ser heterogéneos. Este tipo de problema puede tener aplicaciones en muchos dominios. Analicemos ciertas formas en que se puede realizar esta tarea.

Entrada : test_dict = {‘Gfg’: 10, ‘for’: ‘geeks’} 
Salida : {‘Gfg’: 10, ‘for’: ‘geeks’}

Entrada : test_dict = {‘Gfg’: ‘geeks’} 
Salida : {‘Gfg’: ‘geeks’} 
 

Método n.º 1: Usar type() + comprensión de diccionario 
La combinación de las funciones anteriores se puede usar para realizar esta tarea. En esto, verificamos el tipo integral usando type() y filtramos los datos en la comprensión del diccionario. 

Python3

# Python3 code to demonstrate working of
# Filter dictionary values in heterogeneous dictionary
# Using type() + dictionary comprehension
 
# initializing dictionary
test_dict = {'Gfg' : 4, 'is' : 2, 'best' : 3, 'for' : 'geeks'}
 
# printing original dictionary
print("The original dictionary : " + str(test_dict))
 
# initializing K
K = 3
 
# Filter dictionary values in heterogeneous dictionary
# Using type() + dictionary comprehension
res = {key : val for key, val in test_dict.items()
                   if type(val) != int or val > K}
 
# printing result
print("Values greater than K : " + str(res))
Producción : 

The original dictionary : {'Gfg': 4, 'for': 'geeks', 'is': 2, 'best': 3}
Values greater than K : {'Gfg': 4, 'for': 'geeks'}

 

 Método #2: Usar isinstance() + comprensión de diccionario 
La combinación de las funciones anteriores también se puede usar para resolver este problema. En esto, realizamos esta tarea de manera similar a la anterior, pero la diferencia es que la prueba de tipo la realiza isinstance() en lugar de type().

Python3

# Python3 code to demonstrate working of
# Filter dictionary values in heterogeneous dictionary
# Using isinstance() + dictionary comprehension
 
# initializing dictionary
test_dict = {'Gfg' : 4, 'is' : 2, 'best' : 3, 'for' : 'geeks'}
 
# printing original dictionary
print("The original dictionary : " + str(test_dict))
 
# initializing K
K = 3
 
# Filter dictionary values in heterogeneous dictionary
# Using isinstance() + dictionary comprehension
res = {key : val for key, val in test_dict.items()
           if not isinstance(val, int) or val > K}
 
# printing result
print("Values greater than K : " + str(res))
Producción : 

The original dictionary : {'Gfg': 4, 'for': 'geeks', 'is': 2, 'best': 3}
Values greater than K : {'Gfg': 4, 'for': 'geeks'}

 

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 *