繁体   English   中英

如何在 python 中找到具有特定值的列表中所有元素的索引

[英]How to find the index for all the elements in a list with a particular value in python

我有两张清单,一张带有产品的 ID 代码,另一张带有购买价格。

我计划将它们组合在一个列表列表中,第一个元素是产品 ID,以下元素是价格,如下所示:

product_id = [40, 56, 15, 17, 12, 39, 52, 41, 14, 19, 58, 42]
price_id = [1, 9, 25, 25, 25, 1, 9, 1, 25, 25, 9, 1]
list = [[1, 40, 39, 41, 42], [9, 56, 58, 52], [25, 12, 14, 19, 17, 15]]

我宁愿在没有 pandas 的情况下执行此操作,但我想知道您如何执行此操作,或者使用 pandas 创建一个数据框并按产品 ID 排序是否会更好,因为这将使进一步编码更容易,其余部分已编码假设这种布局。

到目前为止,我计划使用 for 循环将产品列表和价格列表上的索引连接在一起,但我找不到所有索引。 我在想这样的事情:

index_prod1 = [0, 5, 7, 11]
prod1 = [1]

for i in range(len(index_prod1)):
    prod1.append(price_id[i])

list = [prod1, prod9, prod25]

但是,我想知道如何获得index_prod1 ,我是否必须做一个 for 循环,并且每个值只需 append ?

那,我怎样才能使它更通用,以便如果有更多产品添加到两个列表中,model 仍然可以工作,因为这需要改变产品数量。

product_id = [40, 56, 15, 17, 12, 39, 52, 41, 14, 19, 58, 42]
price_id = [1, 9, 25, 25, 25, 1, 9, 1, 25, 25, 9, 1]

out = {}
for a, b in zip(product_id, price_id):
    out.setdefault(b, []).append(a)

out = [[k, *v] for k, v in out.items()]
print(out)

印刷:

[[1, 40, 39, 41, 42], [9, 56, 52, 58], [25, 15, 17, 12, 14, 19]]

如果我理解你的问题,你可以使用 enumerate 所以你会这样做

for idx, i in enumerate(index_prod1):

我将是价值,idx 将是索引是你的意思

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM