如何在嵌套列表 Python 中查找接近数字的值

How to look for a value close to a number inside a nested list Python

我有以下列表结构:

 lista_peliculas = [{'titulo': 'Star Wars: A New Hope', 'estreno' : 1977, 'genero' : 'Sci-Fi', 'duracion' : 121}, 
                           {'titulo': 'Alien', 'estreno' : 1979, 'genero' : 'Sci-Fi', 'duracion' : 117},
                           {'titulo': 'The Next Karate Kid', 'estreno' : 1994, 'genero' : 'Drama', 'duracion' : 107},
                           {'titulo': 'The Terminator', 'estreno' : 1985, 'genero' : 'Sci-Fi', 'duracion' : 107}
        ]

并且我需要通过输入获取电影持续时间(以分钟为单位),并将其与字典中的“duracion”值进行比较并获得最接近的值。

For ex input_minutes = input("输入要比较的持续时间:") 我想打印我存储在最接近它的字典列表中的数字以及有关该电影的其余信息。我不知道该怎么做。非常感谢!

这应该对您有帮助:

lista_peliculas = [{'titulo': 'Star Wars: A New Hope', 'estreno': 1977, 'genero': 'Sci-Fi', 'duracion': 121},
                   {'titulo': 'Alien', 'estreno': 1979, 'genero': 'Sci-Fi', 'duracion': 117},
                   {'titulo': 'The Next Karate Kid', 'estreno': 1994, 'genero': 'Drama', 'duracion': 107},
                   {'titulo': 'The Terminator', 'estreno': 1985, 'genero': 'Sci-Fi', 'duracion': 107}
                   ]

duration_lst = [dictionary['duracion'] for dictionary in lista_peliculas]

duration_inp = int(input("Enter duration"))

closest = duration_lst[min(range(len(duration_lst)), key = lambda i: abs(duration_lst[i]-duration_inp))]

[print(dictionary) for dictionary in lista_peliculas if dictionary['duracion'] == closest]

输出:

Enter duration>? 115
{'titulo': 'Alien', 'estreno': 1979, 'genero': 'Sci-Fi', 'duracion': 117}

这样试试:

myNumber = int(input("Enter duration: "))
print(min([x['duracion'] for x in lista_peliculas], key=lambda x:abs(x-myNumber)))