Python | Encuentra la clave más cercana en el diccionario

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))
Producción :

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))
Producción :

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *