我不明白为什么相同的方法对一个函数和字典有效,而对第二个函数无效,尽管我只是“复制”了它。在
allGuests = {"Alice": {"apples": 5, "pretzels": 12}, "Bob": {"ham sandwiches": 3, "apples": 2}, "Carol": {"cups": 3, "apple pies": 1}}
allCalories = {"apples": {"Calories": 100, "fat": 10}, "pretzels": {"Calories": 200, "fat": 20}, "ham sandwiches": {"Calories": 300, "fat": 30}, "cups": {"Calories": 0, "fat": 0}, "apple pies": {"Calories": 500, "fat": 50}}
def totalBrought(guests, item):
numBrought = 0
for k, v in guests.items():
numBrought = numBrought + v.get(item, 0)
return numBrought
def totalCalories(dish, calories):
cal = 0
for k, v in dish.items():
cal = cal + v.get(calories, 0)
return cal
print(" Number of Things being brought: ")
print(" - Apples " + str(totalBrought(allGuests, "apples")))
print(" Calories of apples " + str(totalCalories(allCalories, "apples")))
print(" - Cups " + str(totalBrought(allGuests, "cups")))
print(" - Cakes " + str(totalBrought(allGuests, "cakes")))
print(" - Ham Sandwiches " + str(totalBrought(allGuests, "ham sandwiches")))
print(" - Apple Pies " + str(totalBrought(allGuests, "apple pies")))
结果(错误的)是:
^{pr2}$有人能解释一下为什么它不起作用吗?对于python初学者来说,这似乎是一个简单的逻辑鸿沟。。。。 提前谢谢!在
谢谢你的帮助。为了更好的理解,我改变了名称(见下文)。 可能会有更复杂的解决方案,但我喜欢坚持“初始”的方法,因为我还是个初学者,不想跳过主题,只想采用更复杂的方法。在
^{1}$然后举例来说:
^{pr2}$我还添加了其他几行,结果如下:
错误就在这里:
^{1}$通过循环,依次迭代每个项,如
{"Calories": 100, "fat": 10}
,{"Calories": 200, "fat": 20}
,依此类推。但您要查询的是不存在的'apples'
,并继续添加0。在你已经拿到钥匙了!您不需要再次迭代
dict
。这违背了它的目的。在您只需:
^{pr2}$我相信你把变量的名字弄错了,这让你很困惑。试试这个:
这似乎也是使用
^{1}$Collections
模块中的Counter
对象的好用例。它允许您在一个调用中计算各种食物的所有频率,而不是要求每个食物单独调用一个函数。在相关问题 更多 >
编程相关推荐