python - 使用 Python 自动化无聊的东西的嵌套列表问题
问题描述
我已经坚持了几个小时,我无法弄清楚这个嵌套字典有什么问题。我已经完全按照书中显示的方式输入了代码,但它仍然没有按应有的方式工作。由于某种原因,该函数仅返回键“Alice”的值。对于如何解决这个问题,有任何的建议吗?
allGuests = {'Alice': {'apples': 5, 'pretzels': 12},
'Bob': {'ham sandwiches': 3, 'apples': 2},
'Carol': {'cups': 3, 'apple pies': 1}}
def totalBrought(guests, item):
numBrought = 0
for k, v in guests.items():
numBrought = numBrought + v.get(item,0)
return numBrought
print('Number of things being brought:')
print(' - Apples' + str(totalBrought(allGuests, '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')))
这段代码的输出应该是,
- Apples 7
- Cups 3
- Cakes 0
- Ham Sandwiches 3
- Apple pies 1
但是我一直把它作为我的输出
- Apples 5
- Cups 0
- Cakes 0
- Ham Sandwiches 0
- Apple pies 0
解决方案
return 语句位于错误的位置(循环内)。应该:
def totalBrought(guests, item):
numBrought = 0
for k, v in guests.items():
numBrought = numBrought + v.get(item,0)
return numBrought
推荐阅读
- android - 有没有办法实现路由器来管理 Android 上的片段?
- java - 以编程方式触发 MouseMove java
- sql - Oracle - 将持续时间与不同的 15 分钟间隔相关联
- python - Selenium 单击并选择下拉值(jsslot)
- cors - 从客户端调用 api 的跨源错误
- visual-studio - 如何在 Azure 应用服务网站上获取 Debug.WriteLine 数据(或类似输出)?
- kdb - 随机发送数据到另一个 kdb 进程
- google-chrome - 对 SameSite 更改与 Chrome 的混淆
- time-complexity - 旋转矩阵 90 度的时间复杂度
- php - 无法将 @varibale 从事务传递到日志