2017-06-19 116 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']会给你所有的意大利面配方。看看给出的例子的最后两行。 –

相关问题