如何在嵌套列表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";值,并获取最接近的值。

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

这应该会对您有所帮助:

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)))

最新更新