0

我有一个由以下人员创建的元素列表:

if x > 2:
            pricePerUnit.append(name)
            pricePerUnit.append(price/quantity)
bestValue = list.count(min(pricePerUnit))

如何在获取值的同时获取每个值之前的元素?

4

1 回答 1

1

最好的办法是用pricePerUnit不同的方式构造你的列表,将两个值一起存储为一个元组:

if x > 2:
    pricePerUnit.append((name, price / quantity))

这样,当您找到最有价值的项目时,您也可以找到名称。要找到列表中的最小值,您现在需要keymin. 此key函数应提取要比较的值以找到最小值,在本例中是元组中的第 1 项(元组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)
于 2013-05-10T02:11:06.420 回答