Неправильная цена сортировки массива Python

Я создал массив с описанием и ценой, но не могу настроить сортировку по цене. Может ли кто-нибудь помочь мне или подсказать, почему сортировка по цене не выполняется правильно? Я проверил тип цены и оказался плавающим. Насколько я понимаю, должно работать. Я тоже не получаю ошибку. Однако продукция не сортируется по цене. :/

Создайте массив

import array 
newlist = []
for d in products:
    desc =d.description
    price=d.price
    #print(type(price))
    newlist.append(f"{desc}:{price}")

вывод нового списка

['Coors Light American-style Light Lager Beer:16.99', 'Coors Light American-style Light Lager Beer:26.99', 'Michelob ULTRA Superior Light Domestic Lager Beer:18.99', 'Samuel Adams Summer Ale Seasonal Beer:19.99', 'Miller Lite American Pilsner Light Lager Beer:22.99', 'Miller Lite American Pilsner Light Lager Beer:26.99', 'Michelob ULTRA Superior Light Domestic Lager Beer:26.99', 'Bud Light Lager Beer:32.99', 'Samuel Adams Summer Ale Seasonal Beer:10.99', 'Michelob ULTRA Superior Light Domestic Lager Beer:33.99', 'Busch Light Domestic Lager Beer:31.99', 'Michelob ULTRA Superior Light Domestic Lager Beer:26.99', 'Coors Banquet American Lager Beer:16.99', 'Stella Artois Premium Lager Beer:20.99', 'Michelob ULTRA Superior Light Domestic Lager Beer:34.99', "Leinenkugel's Summer Shandy Craft Beer:19.99", 'Coors Light American-style Light Lager Beer:22.99', 'Blue Moon Belgian-Style Ale White Wheat Beer:19.99', 'Blue Moon Belgian-Style Ale White Wheat Beer:19.99', 'Heineken Original Lager Beer, 12 Pack, 12 fl oz Bottles:20.99']

Попробуйте отсортировать по цене

import operator
getcount = itemgetter(int(1))
list(map(getcount, newlist))
sortedlist = sorted(newlist, key=getcount)

for l in sortedlist:
    print(l)

Выход

Samuel Adams Summer Ale Seasonal Beer:10.99
Leinenkugel's Summer Shandy Craft Beer:19.99
Heineken Original Lager Beer, 12 Pack, 12 fl oz Bottles:20.99
Michelob ULTRA Superior Light Domestic Lager Beer:18.99
Miller Lite American Pilsner Light Lager Beer:22.99
Miller Lite American Pilsner Light Lager Beer:26.99
Michelob ULTRA Superior Light Domestic Lager Beer:26.99
Michelob ULTRA Superior Light Domestic Lager Beer:33.99
Michelob ULTRA Superior Light Domestic Lager Beer:26.99
Michelob ULTRA Superior Light Domestic Lager Beer:34.99
Blue Moon Belgian-Style Ale White Wheat Beer:19.99
Blue Moon Belgian-Style Ale White Wheat Beer:19.99
Dos Equis Mexican Lager Beer, 12 Pack, 12 fl oz Bottles:19.99
Coors Light American-style Light Lager Beer:16.99
Coors Light American-style Light Lager Beer:26.99
Coors Banquet American Lager Beer:16.99
Coors Light American-style Light Lager Beer:22.99
Stella Artois Premium Lager Beer:20.99
Bud Light Lager Beer:32.99
Busch Light Domestic Lager Beer:31.99
itemgetter(int(1)) Это то же самое, что и itemgetter(1), который получает второй элемент последовательности, а поскольку это строки, сортировка выполняется по второй букве строки.
John Gordon 23.06.2024 00:56

Очень похоже на stackoverflow.com/q/78643742/238704, где также не хватало важных деталей.

President James K. Polk 23.06.2024 00:58
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
81
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Возможно, попробуйте сначала отсортировать, а затем преобразовать в строку:

sortedlist = sorted(products, key=lambda d: d.price)
newlist = []
for d in sortedlist:
    desc =d.description
    price=d.price
    newlist.append(f"{desc}:{price}")
print(newlist)

Это сработало. Спасибо

Slippy 23.06.2024 01:00

Я бы предложил понимание списка: newlist = [f"{d.description}:{d.price}" for d in sortedlist]

Chris 23.06.2024 02:17

Другие вопросы по теме

Похожие вопросы