отображение максимальной цены и количества элементов, хранящихся во вложенном списке

#python

#python

Вопрос:

Я пытаюсь найти способ получить максимальную цену и наименьшее количество из вложенного списка

Первое число — это цена, а второе — количество, поэтому 10 будет ценой, а 50 — количеством в «мышь, 10, 50»

 items=[["mouse,10,50"],["pen,20,50"],["pencil,30,30"],["sharpner,40,40"],["ruler,50,10"]]
max_price=max(items)
  

Комментарии:

1. Каков желаемый результат? ["ruler,50,10"] ?

2. max_price = 50, lowest_qty = 10

3. что, если есть элемент, который имеет [60, 20]

Ответ №1:

Используется math для присвоения бесконечности lowQty и с помощью split() для получения индексированного значения из элементов в списке:

 import math

items=[["mouse,10,50"],["pen,20,50"],["pencil,30,30"],["sharpner,40,40"],["ruler,50,10"]]   
maxPrice = 0
lowQty = math.inf

for elem in items:
    maxPrice = max(maxPrice, int(elem[0].split(",")[1]))
    lowQty = min(lowQty, int(elem[0].split(",")[2]))

print("max_price: {}".format(maxPrice))
print("lowest_qty: {}".format(lowQty))
  

Сокращенная версия:

 print("max_price: {}".format(max([int(elem[0].split(",")[1]) for elem in items])))
print("lowest_qty: {}".format(min([int(elem[0].split(",")[2]) for elem in items])))
  

ВЫВОД:

 max_price: 50
lowest_qty: 10
  

Ответ №2:

Попробуйте

 items=[["mouse,10,50"],["pen,20,50"],["pencil,30,30"],["sharpner,40,40"],["ruler,50,10"]]
max_price = 0
min_quantity = 1000000
for item in items:
  temp = item[0].split(',')
  if int(temp[1]) > max_price:
    max_price = int(temp[1])
  if int(temp[2]) < min_quantity:
    min_quantity = int(temp[2])
print(max_price)
print(min_quantity)
  

Вывод

 50
10
  

Ответ №3:

Самый простой способ, о котором я мог подумать, был бы:

 items=[["mouse,10,50"],["pen,20,50"],["pencil,30,30"],["sharpner,40,40"],["ruler,50,10"]]
max_price = max([int(i[0].split(",")[1]) for i in items])
min_quantity = min([int(i[0].split(",")[2]) for i in items])

print(max_price)
print(min_quantity)
  

Ответ №4:

Вы могли бы использовать re и split для , символа в конце, например,

 >>> import re
>>> items
[['mouse,10,50'], ['pen,20,50'], ['pencil,30,30'], ['sharpner,40,40'], ['ruler,50,10']]
>>> y = max(items, key=lambda x: map(int, re.findall(r'd ', x[0])))
>>> y
['ruler,50,10']
>>> z = y[0].split(',')
>>> z
['ruler', '50', '10']
>>> max_price, low_qty = map(int, z[1:])
>>> max_price, low_qty
(50, 10)
  

Ответ №5:

Вот ваше решение

вы можете поместить код в функцию и передавать элементы в качестве ее аргументов

 from math import inf as INFINITY

    items=[["mouse,10,50"],["pen,20,50"],["pencil,30,30"],["sharpner,40,40"],["ruler,50,10"]]

    max_price= 0
    min_quant = INFINITY


    for List in items:
        string = List[0]

    name,quant,price = st.split(',')
    quant,price = int(quant),int(price)

    if quant<min_quant:
        min_quant = quant

    if price > max_price:
        max_price = price

print("max price is",max_price)
print("min quant is",min_quant)
  

Ответ №6:

 from operator import itemgetter    
items=[["mouse,10,50"],["pen,20,50"],["pencil,30,30"],["sharpner,40,40"],["ruler,50,10"]]
temp_list = []

for i in range(0,len(items)):
    temp_list.append(items[i][0].split(","))

reverse_sorted_element= sorted(temp_list,key=itemgetter(2),reverse = True)
max_price  = reverse_sorted_element[0][2]

sorted_element= sorted(temp_list,key=itemgetter(2))
lowest_qty  = sorted_element[0][2]

print("max_price: {}".format(max_price))
print("lowest_qty: {}".format(lowest_qty))
  

Вывод

 max_price: 50
lowest_qty: 10
  

Комментарии:

1. Я не думаю, что вам следует вносить изменения в поиск оригинального решения list .

2. Ооо, я подумал, что парень, возможно, допустил ошибку. Тогда позвольте мне соответствующим образом изменить ответ.