我有一个由以下人员创建的元素列表:
if x > 2:
pricePerUnit.append(name)
pricePerUnit.append(price/quantity)
bestValue = list.count(min(pricePerUnit))
如何在获取值的同时获取每个值前面的元素?
答案 0 :(得分:1)
最好的办法是以不同的方式构建pricePerUnit
列表,将两个值一起存储为元组:
if x > 2:
pricePerUnit.append((name, price / quantity))
这样,当您找到最有价值的项目时,您也会找到该名称。要查找列表中的最小值,您现在需要为key
提供min
参数。这个key
函数应该提取要比较的值以找到最小值,在这种情况下,它是元组中的第一项(name
是元组中的第0项):
bestValueName, bestValue = min(pricePerUnit, key=lambda ppu: ppu[1])
要查找具有最佳价值的所有商品,您应找到最佳价值,然后找到具有该价值的所有商品:
_, bestValue = min(pricePerUnit, key=lambda ppu: ppu[1])
bestValueItems = filter(lambda ppu: ppu[1] == bestValue, pricePerUnit)