我想创建一个嵌套列表,其中包含以下一个或多个元组列表,列表的顺序取决于用户的偏好
Fruits=[("Apples",2),("Oranges",3),("Pineapples",5)]
Clothes=[("Jeans",10),("Shirts",5),("Dresses",15)]
Pets=[("Dogs",3),("Cats",4),("Turtles",2)]
嵌套列表的顺序将取决于用户的偏好。例如,如果用户更喜欢宠物而不是衣服而不是水果。列表如下所示:
[[("Jeans",10),("Shirts",5),("Dresses",15)],[("Jeans",10),("Shirts",5),
("Dresses",15)],[("Apples",2),("Oranges",3),("Pineapples",5)]]
用户还可以选择只挑选一个或两个项目。例如,如果用户只关心宠物,然后是衣服(不关心水果),他/她的列表将如下所示
[[("Dogs",3),("Cats",4),("Turtles",2)],[("Jeans",10),("Shirts",5),
("Dresses",15)]]
用户输入是一个按顺序列出首选项的列表。例如:
preference= ["Pets", "Fruits", "Clothing"] # preference list for users who care about pets over fruits over clothing.
or
preference= ["Fruits", "Clothing"] # preference list for users who care about fruits over clothing (no regard for pets)
我就是这样试图解决这个问题的。首先,我创建一个空列表,其中包含相应数量的嵌套列表:
empty_list=[[] for x in range (len(preferences)]
这将为我需要的嵌套列表的数量创建一个占位符。然后,我运行一组条件语句,每次弹出一个列表:
if preference[0]=="Fruits":
empty_list[0]=Fruits
if preference[1]=="Clothes":
empty_list[1]=Clothes
empty_list[2]=Pets
elif preference[1]=="Pets":
empty_list[1]=Pets
empty_list[2]=Clothes
if preference[0]=="Pets":
empty_list[0]=Pets
if preference[1]=="Clothes":
empty_list[1]=Clothes
empty_list[2]=Fruits
elif preference[1]=="Fruits":
empty_list[1]=Fruits
empty_list[2]=Clothes
if preference[0]=="Clothes":
empty_list[0]=Clothes
if preference[1]=="Pets":
empty_list[1]=Pets
empty_list[2]=Fruits
elif preference[1]=="Fruits":
empty_list[1]=Fruits
empty_list[2]=Pets
我的解决方案效率低下,而且如果只有两个首选项而不是三个首选项,还会导致列表分配超出范围的问题。有没有更像Python的写作方式
任何提示或指导都将不胜感激
试试这个方法
你应该把数据存储在字典里
然后通过键访问字典
一旦在dict中有了它,就可以很容易地用变量访问这些值
然后你可以使用一个简单的列表理解来捕获你所有的兴趣
相关问题 更多 >
编程相关推荐