2017-06-19 64 views
1

說我已經創建了一個列表的列表子列表與字符串(稱之爲美食傑):合併包含在Python一樣最後一個字符串3

>>> AllRecipes [['Tomato', 'hot', 'Pasta'], ['Mushrooms', 'Lettuce', 'cold', 'Salad'], ['Chocolate', 'Nuts', 'hot', 'Cookies'], ['Vegetables', 'Lemon', 'cold', 'Pasta'], ['Chocolate', 'Pistachio', 'hot', 'Cookies'], ['Cheese', 'hot', 'Pasta'], ['Lettuce', 'Fruits', 'cold', 'Salad']] 

我想包含同一最後一個字符串這樣子列表相結合: 1)在範圍取對於i(LEN(Allrecipes的)):

AllRecipes[i][-1] == 'Pasta': 
AllRecipes[0] = ['Tomato', 'hot', 'Pasta'] 
AllRecipes[3] = ['Vegetables', 'Lemon', 'cold', 'Pasta'] 
AllRecipes[5] = ['Cheese', 'hot', 'Pasta'] 

2)把它變成:

Pasta = { hot: ['Tomato'], hot: ['Cheese'], cold: ['Vegetables', 'Lemon']} 

如果我的問題不清楚,請讓我知道。預先感謝您的幫助:)

跟進問題(現在我爲每個作出的詞典):

說我有一個列表ToCook = []其中ToCook = [「意麪」,'餅乾','沙拉'] 如何檢索ToCook中的每個項目的等價字典?

+1

你期望的輸出是不是一個有效的結構。你想讓它成爲一本字典嗎?這些逗號實際上應該是冒號嗎?另外,你有沒有試圖做到這一點呢?你能顯示你自己的代碼嗎? – idjaw

+1

最後一個構造不是有效的Python對象。 –

+0

即使在第二次檢查時,您的預期輸出也會出現其他問題。請通過生成有效的Python輸出來確認您正在尋找什麼。 – idjaw

回答

1

這可能比較容易與defaultdict解決:

from collections import defaultdict 

AllRecipes=[['Tomato', 'hot', 'Pasta'], ['Mushrooms', 'Lettuce', 'cold', 'Salad'], ['Chocolate', 'Nuts', 'hot', 'Cookies'], ['Vegetables', 'Lemon', 'cold', 'Pasta'], ['Chocolate', 'Pistachio', 'hot', 'Cookies'], ['Cheese', 'hot', 'Pasta'], ['Lettuce', 'Fruits', 'cold', 'Salad']] 

mydict = defaultdict(list) 

for recipe in AllRecipes: 
    mydict[recipe[-1]].append(recipe[:-1]) 

for key, vals in mydict.items(): 
    print('{} : {}'.format(key,vals)) 

這導致

Pasta : [['Tomato', 'hot'], ['Vegetables', 'Lemon', 'cold'], ['Cheese', 'hot']] 
Cookies : [['Chocolate', 'Nuts', 'hot'], ['Chocolate', 'Pistachio', 'hot']] 
Salad : [['Mushrooms', 'Lettuce', 'cold'], ['Lettuce', 'Fruits', 'cold']] 
+0

哦,非常感謝你!這工作! – COxf

+0

我怎麼能夠做到以下幾點:說我有一個列表ToCook = []其中ToCook = ['Pasta','Cookies','沙拉']我如何檢索ToCook中的每個項目,它的等價字典? – COxf

+0

你是如何用普通的字典來做的。例如'mydict ['Pasta']會給你所有的意大利麪配方。看看給出的例子的最後兩行。 –

相關問題