A veces, podemos tener un problema muy específico en el que se nos da un par de tuplas como valores en el diccionario y necesitamos filtrar los elementos del diccionario según esos pares. Este problema particular como caso de uso en muchos algoritmos de geometría en programación competitiva. Analicemos ciertas formas en que se puede realizar esta tarea.
Método n.º 1: Usar items()
+ comprensión del diccionario
Estas funcionalidades juntas pueden lograr esta tarea. Podemos acceder a todos los valores usando items()
y la condición puede ser impuesta por comprensión del diccionario.
# Python3 code to demonstrate working of # Filter dictionary of tuples by condition # Using items() + dictionary comprehension # initializing dictionary test_dict = {'a' : (6, 3), 'b' : (4, 8), 'c' : (8, 4)} # printing original dictionary print("The original dictionary is : " + str(test_dict)) # Filter dictionary of tuples by condition # Using items() + dictionary comprehension res = {key: val for key, val in test_dict.items() if val[0] >= 6 and val[1] <= 4} # printing result print("The filtered dictionary is : " + str(res))
The original dictionary is : {'b': (4, 8), 'a': (6, 3), 'c': (8, 4)} The filtered dictionary is : {'a': (6, 3), 'c': (8, 4)}
Método n.º 2: usarlambda + filter()
este método funciona de manera similar al método anterior, con la excepción de usar la filter
función en lugar de la comprensión del diccionario para compactar la lógica. Funciona solo con Python2.
# Python code to demonstrate working of # Filter dictionary of tuples by condition # Using lambda + filter() # initializing dictionary test_dict = {'a' : (6, 3), 'b' : (4, 8), 'c' : (8, 4)} # printing original dictionary print("The original dictionary is : " + str(test_dict)) # Filter dictionary of tuples by condition # Using lambda + filter() res = dict(filter(lambda (x, (y, z)): y >= 6 and z <= 4, test_dict.items())) # printing result print("The filtered dictionary is : " + str(res))
The original dictionary is : {'b': (4, 8), 'a': (6, 3), 'c': (8, 4)} The filtered dictionary is : {'a': (6, 3), 'c': (8, 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