我有以下的列表工作正常,但最後的印刷是borked,我無法讓計數器儘快在每個列表中返回正確數量的項目因爲我的字典中有一個以上的密鑰!它應該告訴我有多少人選擇了特定的甜點作爲他們的最愛。將列表中的項目用作字典值
desserts = {}
name_vote = input ('Name:vote ')
while name_vote != '':
no_colon_name_vote = name_vote.replace(":", " ")
listed_name_vote = no_colon_name_vote.split()
name = listed_name_vote[0]
vote = ' '.join(listed_name_vote[1:])
if vote not in desserts:
desserts[vote] = [name]
else:
desserts[vote].append(name)
name_vote = input ('Name:vote ')
for dessert in desserts:
count = sum(len(entries) for entries in desserts.values())
print(dessert, count,'vote(s):',' '.join(desserts[dessert]))
所需的輸出:
apple pie 1 vote(s): Georgina
gelato 2 vote(s): Sophia Kirsten
chocolate 3 vote(s): Greg Will James
而是我得到設定爲6的所有三個值!
非常感謝!我開始看到我的邏輯是正確的,但我必須更好地提高代碼的效率!早些年!! – Mathmos 2014-11-21 08:46:53
我假設defaultdict是一種「腳手架」代碼的方式,這樣一個正確格式的空白字典(在這種情況下值作爲列表)已準備就緒,並且正在等待填充儘可能小的障礙物? – Mathmos 2014-11-21 08:53:07
是的,這是一個快捷方式,如果你嘗試訪問一個尚未添加的鍵,它將使用提供的'默認函數'爲你創建一個......在我們的例子中是'list'構造函數。所以你可以跳過'如果存在'檢查,只是把它看作總是有一個列表準備好你 – Anentropic 2014-11-21 10:12:23