为了账号安全,请及时绑定邮箱和手机立即绑定

列表中的数据处理,Python中有重复项

列表中的数据处理,Python中有重复项

暮色呼如 2021-03-20 18:15:45
我有两个清单:一个包含产品,另一个包含它们的相关价格。列表中可以包含未定义数量的产品。列表的示例如下:产品:['Apple','Apple','Apple','Orange','Banana','Banana','Peach','Pineapple','Pineapple']价格:['1.00','2.00','1.50','3.00','0.50','1.50','2.00','1.00','1.00']我希望能够从产品列表中删除所有重复项,并仅将与唯一产品相关联的最便宜的价格保留在价格列表中。请注意,某些产品的价格可能相同(在我们的示例中为菠萝)。所需的最终列表如下所示:产品:['Apple','Orange','Banana','Peach','Pineapple']价格:['1.00','3.00','0.50','2.00','1.00']我想知道在Python中最有效的方法。谢谢
查看完整描述

3 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

from collections import OrderedDict

products = ['Apple', 'Apple', 'Apple', 'Orange', 'Banana', 'Banana', 'Peach', 'Pineapple', 'Pineapple']

prices = ['1.00', '2.00', '1.50', '3.00', '0.50', '1.50', '2.00', '1.00', '1.00']


min_prices = OrderedDict()

for prod, price in zip(products, prices):

    min_prices[prod] = min(float(price), min_prices.get(prod, float('inf')))


>>> print min_prices.keys(), min_prices.values()

['Apple', 'Orange', 'Banana', 'Peach', 'Pineapple'] [1.0, 3.0, 0.5, 2.0, 1.0]


查看完整回答
反对 回复 2021-03-31
?
函数式编程

TA贡献1807条经验 获得超9个赞

那这个呢:


prices = map(float,prices)

r={}

for k,v in zip(products,prices):

    if v < r.setdefault(k,float('inf')):

        r[k] = v

products,prices = r.keys(),map(str,r.values())


查看完整回答
反对 回复 2021-03-31
?
翻翻过去那场雪

TA贡献2065条经验 获得超14个赞

可能最简单的方法是利用字典对唯一键的强制执行:


from operator import itemgetter

Products = ['Apple', 'Apple', 'Apple', 'Orange', 'Banana', 'Banana', 'Peach', 'Pineapple', 'Pineapple']

Prices = ['1.00', '2.00', '1.50', '3.00', '0.50', '1.50', '2.00', '1.00', '1.00']


final = dict(sorted(zip(Products, Prices), key=itemgetter(1), reverse=True))


查看完整回答
反对 回复 2021-03-31
  • 3 回答
  • 0 关注
  • 202 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号