回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我想创建一个嵌套列表,其中包含以下一个或多个元组列表,列表的顺序取决于用户的偏好</p>
<pre><code>Fruits=[("Apples",2),("Oranges",3),("Pineapples",5)]
Clothes=[("Jeans",10),("Shirts",5),("Dresses",15)]
Pets=[("Dogs",3),("Cats",4),("Turtles",2)]
</code></pre>
<p>嵌套列表的顺序将取决于用户的偏好。例如,如果用户更喜欢宠物而不是衣服而不是水果。列表如下所示:</p>
<pre><code>[[("Jeans",10),("Shirts",5),("Dresses",15)],[("Jeans",10),("Shirts",5),
("Dresses",15)],[("Apples",2),("Oranges",3),("Pineapples",5)]]
</code></pre>
<p>用户还可以选择只挑选一个或两个项目。例如,如果用户只关心宠物,然后是衣服(不关心水果),他/她的列表将如下所示</p>
<pre><code>[[("Dogs",3),("Cats",4),("Turtles",2)],[("Jeans",10),("Shirts",5),
("Dresses",15)]]
</code></pre>
<p>用户输入是一个按顺序列出首选项的列表。例如:</p>
<pre><code>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)
</code></pre>
<p>我就是这样试图解决这个问题的。首先,我创建一个空列表,其中包含相应数量的嵌套列表:</p>
<pre><code>empty_list=[[] for x in range (len(preferences)]
</code></pre>
<p>这将为我需要的嵌套列表的数量创建一个占位符。然后,我运行一组条件语句,每次弹出一个列表:</p>
<pre><code>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
</code></pre>
<p>我的解决方案效率低下,而且如果只有两个首选项而不是三个首选项,还会导致列表分配超出范围的问题。有没有更像Python的写作方式</p>
<p>任何提示或指导都将不胜感激</p>