2012-09-16 47 views
0

对不起,如果这个问题措辞笨拙。我在干什么:打印列表,带有来自其他列表的值

我有一个列表。

standardpizzalist = ["1. Supreme", "2. Godfather", "3. Meatlovers", "4. Capricosa", "5. BBQ Chicken", "6. Prawn Delight", "7. Basil and Pork",] 

客户有这个列表显示,然后他们进入他们想要的选择,例如。 1,3,5代表至尊,肉食和烧烤鸡。 这些值被保存在一个列表也:

orderedpizzas = [1, 3, 5] 

我需要显示在屏幕上的列表orderedpizzas,但被印刷,而不是1,3和5,我需要它从另一个列表读出的值。 例如。 1. Supreme,3. Meatlovers,5.烧烤鸡。

回答

2

你的意思是这样的:

>>> for pizza in orderedpizzas: print standardpizzalist[pizza-1] 

1. Supreme 
3. Meatlovers 
5. BBQ Chicken 
+0

完美!我认为这正好回答我的问题!即将投票正确。 –

+0

太棒了!我甚至将其简化为一行;-) – mawueth

2

我认为你最好使用dictionary代替:

>>> pizza_dict 
{1: 'Supreme', 2: 'Godfather', 3: 'Meatlovers', 4: 'Capricosa', 5: 'BBQ Chicken', 6: 'Prawn Delight', 7: 'Basil and Pork'} 
>>> pizza_dict[1] 
'Supreme' 
>>> pizza_dict[3] 
'Meatlovers' 
>>> pizza_dict[5] 
'BBQ Chicken' 

,然后我们可以使用一个list comprehension得到名称:

>>> ordered_pizzas = [1,3,5] 
>>> names = [pizza_dict[num] for num in ordered_pizzas] 
>>> names 
['Supreme', 'Meatlovers', 'BBQ Chicken'] 
0
print ', '.join(standardpizzalist[x-1] for x in orderedpizzas) 

会给你一个逗号分隔的有序比萨饼列表。

+0

@dsm - 谢谢,修正。 – Aesthete

0

使用有序字典。

from collections import OrderedDict 

pizzas = OrderedDict() 
pizzas[1] = 'Supreme' 
pizzas[2] = 'Godfather' 
...etc... 

所以那么当你遍历的项目,顺序保持(不同于一般的字典):

for index, pizza in pizzas.items(): 
    print pizza  # First prints 'Supreme', then 'Godfather', etc...