Python中重复列表的数据处理

2024-07-07 06:00:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个清单:一个是产品清单,另一个是相关价格清单。列表可以包含未定义数量的产品。列表示例如下:

  • 产品:[‘苹果’、‘苹果’、‘苹果’、‘橘子’、‘香蕉’、‘香蕉’、‘桃’、‘菠萝’、‘菠萝’]
  • 价格:['1.00'、'2.00'、'1.50'、'3.00'、'0.50'、'1.50'、'2.00'、'1.00'、'1.00']

我希望能够从产品列表中删除所有重复的产品,并且只保留与价格列表中的独特产品相关联的最便宜的价格。请注意,有些产品可能有相同的价格(在我们的示例中是菠萝)。你知道吗

所需的最终列表如下:

  • 产品:[‘苹果’、‘橘子’、‘香蕉’、‘桃’、‘菠萝’]
  • 价格:['1.00','3.00','0.50','2.00','1.00']

我想知道在Python中最有效的方法。谢谢


Tags: 方法苹果示例列表数量产品价格未定义
3条回答

这个呢:

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())
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]

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

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

相关问题 更多 >