Как получить минимальное значение и имя из списка
У меня есть парсер из которого я получаю данные цену и имя. Далее добавляю их в list:
list.append(
{
"min.name": name,
"min.price": price
}
)
Результат:
[{'min.name': 'Apple iPhone 12 128GB Black Neverlock', 'min.price': '23 999'}, {'min.name': 'iPhone IPhone XR xr Айфон хр Хр Iphone black', 'min.price': '14 400'}, ...]
Мне нужно сравнить min.price определить самую низкую цену, а далее получить название товара к которому относиться самая низкая цена и вывести эти данные примерно так: "Название" "Цена"
Ответы (2 шт):
Автор решения: Namerek
→ Ссылка
l = [{'min.name': 'Apple iPhone 12 128GB Black Neverlock', 'min.price': '23 999'}, {'min.name': 'iPhone IPhone XR xr Айфон хр Хр Iphone black', 'min.price': '14 400'}]
m = min(l, key=lambda x: int(''.join(filter(str.isdigit, x.get('min.price')))))
print(m)
# {'min.name': 'iPhone IPhone XR xr Айфон хр Хр Iphone black', 'min.price': '14 400'}
print(*m.values())
# iPhone IPhone XR xr Айфон хр Хр Iphone black 14 400
Автор решения: DiMithras
→ Ссылка
Не совсем понятен смысл, зачем делать список из словарей с одинаковыми ключами?
Почему не:
data = {'min.name': [], 'min.price': []}
data['min.name'].append(name)
data['min.price'].append(price)
Ну или из того что есть собрать
(list лучше не использовать в качесве переменной, но пусть будет как в примере):
data = {'min.name': [], 'min.price': []}
for l in list:
data['min.name'].append(l['min.name'])
data['min.price'].append(l['min.price'])
Затем поиск значительно упростится, а именно:
minimum_price = min(data['min.price'])
data['min.name'].index(minimum_price)
# Или одной строкой
data['min.name'].index(min(data['min.price']))
Да и DataFrame в Pandas с таким форматом собирается на раз. По сути у Вас ключи это название колонок, а для названий колонок рядами будут списки.