這是取自http://automatetheboringstuff.com/2e/chapter5/的修改練習。他們最初的例子要求找出所有客人帶來的物品總數,例如每個人帶來的“蘋果”總數
我想弄清楚如何讓函式回傳每個人帶來的總物品,這就是我想出的代碼。它有效,但
broughtByPerson = v.get('apples',0)
部分似乎可以簡化。如果有 100 個不同的專案,如果不為每個不同的專案撰寫上述行,代碼會如何?
allGuests = {'Alice': {'apples': 5, 'pretzels': 12},
'Bob': {'ham sandwiches': 3, 'apples': 2},
'Carol': {'cups': 3, 'apple pies': 1}}
def totalBrought(guests, names):
broughtByPerson = 0
for k,v in guests.items():
if k == names:
broughtByPerson = v.get('apples',0)
broughtByPerson = v.get('pretzels',0)
broughtByPerson = v.get('ham sandwiches',0)
broughtByPerson = v.get('cups',0)
broughtByPerson = v.get('apple pies',0)
return broughtByPerson
print('Alice brought: ' str(totalBrought(allGuests, 'Alice')))
print('Bob brought: ' str(totalBrought(allGuests, 'Bob')))
print('Carol brought: ' str(totalBrought(allGuests, 'Carol')))
uj5u.com熱心網友回復:
您可以對內部字典的值求和:
def totalBrought(guests, name):
return sum(guests[name].values())
uj5u.com熱心網友回復:
這是一個可能的解決方案:
def totalBrought(guests, name):
broughtByPerson = 0
for food, quantity in guests[name].items():
broughtByPerson = quantity
return broughtByPerson
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/434469.html
下一篇:條件成立時對字典串列的值求和
