在Python中,如何在元素列表中搜索值,然后在该元素之前获取元素?

时间:2013-05-10 01:44:21

标签: python python-3.x

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

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

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

1 个答案:

答案 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)