这个函数的目标是输出订单的总成本。你知道吗
我有一个函数,它给了我一个类似于{'2': '150.99', '3': '99.50', '15': '5.07'}
的字典,其中第一个值是ID号,第二个值是具有该ID号的商品的价格。所以3号商品的价格是99美元/欧元/英镑/不管我的单位是什么,50美分/单位。你知道吗
另一个函数为我提供了一个要查找的项目ID列表,如[2, 2, 3]
,其中任何项目ID都可以多次出现,以显示我正在购买多个项目。所以在这个例子中,我将以150.99的价格购买2件商品2,以99.50的价格购买1件商品3。你知道吗
我想定义一个函数,让我把商品ID字典:prices和商品ID列表传递给lookup,它会输出列表中所有商品的总成本。所以对于上面的例子,它应该输出值401.48
,因为(2*150.99)+99.50=401.48
。你知道吗
作为一个测试,我已经试过了
test = DictionaryVariable.get('2')
print test
这将打印期望值(因此在本例中为150.99)
然而,我试图定义一个函数
def FindPrice(dictionary, idlist):
price = 0.00
for id in idlist:
price + float(dictionary.get(id))
return price
然后这样称呼:
Prices = FindPrice(DictionaryVariable, IDListVariable)
print Prices
没有工作dictionary.get(id)
部分似乎返回了None
(我通过将其设置为str而不是float进行了测试),因此它抛出了一个错误:“TypeError:float()参数必须是字符串或数字”。我怀疑我需要使用一些其他的方法从我的列表中输入条目id,但是我不知道该方法是什么。我不知道为什么dictionary.get(id)
返回None
,但是DictionaryVariable.get('2')
给出了我期望的值。你知道吗
编辑: 感谢那些有用的帖子指出,我在字典中使用的是字符串,而不是整数或浮点数,我成功地做到了:
def FindPrice(dictionary, idlist):
Price = sum(float(dictionary.get(x,0)) for x in idlist)
return Price
Prices = FindPrice(DictionaryVariable, FunctionThatMakesListofIDs('FileToGetIDsFrom.xml'))
print Prices
get()
返回None
如果找不到该项,顺便说一句,您可以将第二个可选参数传递给get()
。因此,如果没有找到id
,那么返回该参数help(dict.get)
:列表[2,2,3]包含整数,但dict的键是字符串。我建议您首先使用int键和浮点值来创建dict,或者像这样进行转换:
相关问题 更多 >
编程相关推荐