首页 > 解决方案 > 使用 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

标签: pythondictionary

解决方案


return 语句位于错误的位置(循环内)。应该:

def totalBrought(guests, item):
    numBrought = 0
    for k, v in guests.items():
        numBrought = numBrought + v.get(item,0)
    return numBrought

推荐阅读