Python - 将嵌套在列表中的字典中的元素乘以同一字典中的另一个元素?

时间:2018-02-03 00:49:27

标签: python dictionary nested

我有一个挑战,我需要为Codio完成,但我被卡住了。挑战是创建一个杂货项目列表(你会在'while'语句中看到我的意思)。然后通过将价格乘以该项目的数量,然后将它们全部添加并显示它来查找每个项目的成本。我一直收到错误:

  

“TypeError:不能将序列乘以'float'”

类型的非int

当我尝试乘以值* value2时。我已经指定列表中的哪个字典从中拉出键/值(通过设置x等于列表中元素的数量)以及从哪个键/值中提取数字,所以我不知道究竟发生了什么。我如何将'number'的值乘以'price'的值?下面的代码只是我尝试过的众多方法之一。 谢谢!

grocery_item = {}
grocery_history = []
stop = 'go'

while stop!='q':
    item_name=input("Item name:\n")
    quantity=int(input("Quantity purchased:\n"))
    cost=float(input("Price per item:\n"))
    grocery_item={'name':item_name, 'number':int(quantity), 'price':float(cost)}
    grocery_history.append(grocery_item)

    stop=input("Would you like to enter another item?\nType 'c' for continue or 'q' to quit")

grand_total=0

#Define a 'for' loop.  

for x in range(0, len(grocery_history)):
    value=float(grocery_history[x]['number'])
    value2=float(grocery_history[x]['price'])
  #Calculate the total cost for the grocery_item.
    item_total="%.2f" % value*value2
  #Add the item_total to the grand_total
    grand_total="%.2f" % float(grand_total+item_total)
  #Output the information for the grocery item to match this example:
  #2 apple @ $1.49 ea $2.98
    print (grocery_history[x]['number']+"  "+grocery_history[x]['name']+" @ "+grocery_history[x]['price']+" ea  $"+grand_total)

    item_total=0

print (grand_total)

1 个答案:

答案 0 :(得分:2)

你被运营商优先级抓住了。使用括号,或只是将格式移到print语句。

item_total = value*value2   # format later

item_total="%.2f" % (value*value2)