当前位置: 首页 > 知识库问答 >
问题:

在Python中重复列表中的数据处理

芮意
2023-03-14

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

  • 产品:[“苹果”、“苹果”、“苹果”、“橙子”、“香蕉”、“香蕉”、“桃子”、“菠萝”、“菠萝”]
  • 价格:['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实现这一点的最有效方法。非常感谢。

共有3个答案

罗均
2023-03-14

那么这个呢:

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())
董翰墨
2023-03-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))
景辰钊
2023-03-14
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]
 类似资料:
  • 我需要从一个列表中追加一些重复的值到一个子列表中,让我用一个例子来解释: 我有一个名为的变量,它包含大写字母字符串和符号。 我的最终目标是拥有这个数组: 在示例中,我需要将所有的符号分组到原始中的子列表中,我想过在数组中迭代,找到当前附近的所有符号,然后创建第二个数组,但我想也许还有更多的pythonic我可以做的,有什么想法吗?

  • 问题内容: 我有一个列表列表,每个列表都有一个重复序列。我正在尝试计算列表中重复整数序列的长度: 哪个会返回: 任何建议或技巧都将受到欢迎。我现在正在尝试使用re.compile来解决这个问题,但是它不太正确。 问题答案: 通过迭代2到一半序列长度之间的猜测来猜测序列长度。如果未发现任何模式,则默认返回1。 得到(如预期): 根据要求,此替代方法可提供最长的重复序列。因此,它将为list_b返回4

  • 我试图在列表中的列表中插入一些东西,但是我不知道该怎么做。 例如,我有一个列表列表: 我想将插入子列表,索引为0,位于元素之后,所以它看起来像这样:

  • 假设我需要一个命令,如python test.py--layer 3--size 100100 其中 和大小是一个逗号分隔的列表 请帮我做这个命令

  • 问题内容: 如果想基于每个嵌套列表的第一个元素评估重复项,谁能提出一个好的解决方案从嵌套列表中删除重复项? 主列表如下所示: 如果已经在第一位置出现了另一个具有相同元素的列表,那么我想删除该列表并得到以下结果: 您可以建议一种算法来实现此目标吗? 问题答案: 您是否关心保留订单/删除了哪些重复项?如果不是,则: 会做的。如果您想保留订单并想保留第一个订单,则:

  • 问题内容: 是否可以使用python获取哪些值在列表中重复? 我有一个项目清单: 我知道删除重复项的最佳方法是,但是是否可以知道正在重复哪些值?如您所见,在此列表中,重复项是第一个和最后一个值。。 是否有可能获得此结果或python中类似的东西?我正在努力避免做出荒谬的大条件声明。 问题答案: 这些答案是O(n),因此比使用的代码多一点,但随着时间的延长,效率会大大提高 如果您只想知道重复项,请使