簡體   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