2016-10-14 65 views
-3

我有成千上萬的產品,例如各成分的字典中動態創建列表:在使用Python

ProductID | Ingredients 
00001  | itemA, itemB, itemC, itemD 
00002  | itemF, itemD, itemG, itemA, itemI 
00003  | itemH, itemI, itemD, itemF, itemT,itemB, itemC 

........等等。

我想做一個獨特的成分列表,並製作一個地圖,哪些成分在哪個產品。因此,例如,我想要以下列方式得到的輸出:

{itemA: [00001,00011, 00005,00007]} 
{itemB: [00003, 00002, 000056]} 
{itemC: [00009, 00087, 00044, 00647, 00031, 00025]} 

因此,列表大小對於每個項目都是不同的。有人能幫我解決這個問題嗎?由於

+2

您可能希望* *一個字典,而不是三個。另外,你能指定輸入多一點嗎?那是一個txt文件嗎? – brianpck

+0

源數據是什麼形狀? –

+0

是正好一個詞典,每個項目是一個鍵和產品ID的數量是值。 – muazfaiz

回答

1

假設它是一個文本文件,它可能是這樣的:

from collections import defaultdict 

product_ingredients_mapping = defaultdict(list) 
file_data = open('products.txt') 

for row in file_data.readlines(): 
    data = row.split('|') 
    ingredients = data[1].split(',') 
    product_id = data[0].strip() 
    for ingredient in ingredients: 
     product_ingredients_mapping[ingredient.strip()].append(product_id)