gpt4 book ai didi

python - 使用条件语句编译嵌套列表

转载 作者:行者123 更新时间:2023-12-01 08:46:21 24 4
gpt4 key购买 nike

我想创建一个包含以下一个或多个元组列表的嵌套列表,列表的顺序基于用户的偏好。

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

我的解决方案效率低下,如果只有两个偏好而不是三个,还会导致列表分配超出范围的问题。有没有更Pythonic的方式来写这个?

非常感谢任何提示或指导。

最佳答案

你应该将数据存储在字典中

然后通过键访问该字典

data = dict(
Fruits=[("Apples",2),("Oranges",3),("Pineapples",5)]
Clothes=[("Jeans",10),("Shirts",5),("Dresses",15)]
Pets=[("Dogs",3),("Cats",4),("Turtles",2)]
)

一旦将其放入字典中,您就可以轻松地使用变量访问值

fruits = "Fruits"
my_fruits = data[fruits]

然后您可以使用简单的列表理解来捕获您的所有兴趣

interests = ["Fruits","Pets"]    
interesting_things = [data[interest] for interest in interests]

interests = ["Fruits","Clothes"]
interesting_things = [data[interest] for interest in interests]

关于python - 使用条件语句编译嵌套列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53291213/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com