2015-09-04 84 views
0

這個工程:循環元組列表 - 類型錯誤:unhashable類型:「名單」

shopping_list = ["banana", "orange", "apple"] 

stock = { 
    "banana": 6, 
    "apple": 0, 
    "orange": 32, 
    "pear": 15 
} 

prices = { 
    "banana": 4, 
    "apple": 2, 
    "orange": 1.5, 
    "pear": 3 
} 

def compute_bill(food): 
    total = 0 
    # food = tuple(food) 
    for food in food: 
     total += prices[food] 

    return total 

print compute_bill(shopping_list) 

但是,如果我改變食物在環路別的,例如X - 食品中X - 然後蟒蛇給我下面的錯誤(只用適用於食品中的食品。)

Traceback (most recent call last): 
    File "compute-shopping.py", line 25, in <module> 
    print compute_bill(shopping_list) 
    File "compute-shopping.py", line 21, in compute_bill 
    total += prices[food] 
TypeError: unhashable type: 'list' 

這是不相關的使用元組或列表的密鑰字典...或者是什麼呢?!

+2

請循環變量更改爲'food'其他的東西,你要覆蓋較早的值'food' –

+0

「用於食物的食物」你有沒有考慮用不同的名字來提及它的內容? – TigerhawkT3

+0

「食物」是一個列表還是一個字符串? Python似乎認爲它是一個列表,並且您正在使用它來索引一本字典,這是一個禁忌。字典鍵必須是不可變的。 –

回答

2

假設食物列表,你只需要改變的for循環:

for food_type in food: 
    total += prices[food_type] 
相關問題