La búsqueda de claves en el diccionario de python se ha discutido muchas veces. Pero a veces, podemos tener un problema en el que necesitamos buscar la clave que es la más cercana de las claves dadas. Analicemos ciertas formas en que se puede realizar esta tarea.
Método #1: Uso de la comprensión de listas + keys()
+ lambda
La combinación de las funciones anteriores se puede usar para realizar la tarea particular de encontrar la clave más cercana en el diccionario. La función de teclas se puede usar para acceder a las teclas del diccionario, la función lambda se puede usar para formular la lógica y la comprensión de la lista para aplicar todo eso a la lista completa.
# Python3 code to demonstrate working of # Closest key in dictionary # Using list comprehension + keys() + lambda # initializing dictionary test_dict = {13 : 'Hi', 15 : 'Hello', 16 : 'Gfg'} # initializing nearest key search_key = 15.6 # printing original dictionary print("The original dictionary is : " + str(test_dict)) # Using list comprehension + keys() + lambda # Closest key in dictionary res = test_dict.get(search_key) or test_dict[ min(test_dict.keys(), key = lambda key: abs(key-search_key))] # printing result print("The value to the closest key : " + str(res))
The original dictionary is : {16: 'Gfg', 13: 'Hi', 15: 'Hello'} The value to the closest key : Gfg
Método #2: Usobisect_left() + OrderedDict()
Este método generalmente usa el método de búsqueda binaria para encontrar el número más cercano. Si bien es rápido, cambia el orden y también devuelve 2 candidatos potenciales para los valores más cercanos, el actual y el valor de la siguiente clave en secuencia. Y simplemente devuelve la posición de la clave.
# Python3 code to demonstrate working of # Closest key in dictionary # Using bisect_left() + OrderedDict() import collections import bisect # initializing dictionary test_dict = collections.OrderedDict() test_dict = {13 : 'Hi', 15 : 'Hello', 16 : 'Gfg'} # initializing nearest key search_key = 15.6 # printing original dictionary print("The original dictionary is : " + str(test_dict)) # Using bisect_left() + OrderedDict() # Closest key in dictionary res = bisect.bisect_left(list(test_dict.keys()), 15.6) # printing result print("The position of closest key : " + str(res))
The original dictionary is : {16: 'Gfg', 13: 'Hi', 15: 'Hello'} The position of closest key : 3
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