07 UVA10420 List of Conquests
內容
在第一幕中,萊波雷洛向唐娜·埃爾維拉講述了他主人的一長串征服:
「這是我主人所喜愛的美女名單,是我自己列出來的:你看一下,和我一起讀一下。 義大利有六百四十個,德國有兩百三十一個,法國有一百個,土耳其有九十一個; 但在西班牙已經一千零三了! 其中有鄉村姑娘、侍女、都市麗人; 有伯爵夫人、男爵夫人、侯爵夫人、公主:各個等級、各個體型、各個年齡的女性。 」(Madamina, il Catalogo è questo)
由於萊波雷洛按照時間順序記錄了唐璜所“喜愛”的所有“美女”,因此他要向別人展示他主人的征服是非常麻煩的,因為他需要按國籍來統計“美女”的數量每一次。 你要幫助萊波雷洛數數。
輸入描述
輸入最多包含 2000 行,但第一行。 第一行包含數字n,表示還有n行。 接下來的每一行最多 75 個字符,包含一個國家(第一個單字)和喬瓦尼所愛的一個女人的名字(該行中的其餘單字)。 您可能會假設所有國家/地區的名稱僅由一個單字組成。
輸出說明
輸出由按字母順序排列的行組成。 每行以一個國家的名稱開頭,後面是喬瓦尼在該國家所愛的女性總數,中間用空格分隔。
while True: #進入無限迴圈,一直執行,直到遇到 EOFError 錯誤
try:
a = {} #創建一個空的字典 a,用於存儲單詞和它們的出現次數
n = int(input()) #接受一個整數 n 的輸入,表示接下來會有 n 組文字輸入
for i in range(n): #使用 for 迴圈遍歷 n 次,接受 n 組文字輸入
n = input().split() #接受一行文字輸入,並使用 split() 函數分割成單詞,將結果存儲在變數 n 中
if n[0] not in a: #檢查字典 a 中是否已經存在以 n[0](即第一個單詞)為鍵的項目
a[n[0]] = 1 #如果字典中還不存在以 n[0] 為鍵的項目,則新增該項目並設置其值為 1
else:
a[n[0]] += 1 #如果字典中已經存在以 n[0] 為鍵的項目,則增加該項目的值,表示這個單詞又出現了一次
b = sorted(a) #使用 sorted() 函數對字典 a 的鍵(單詞)進行排序,將排序結果存儲在變數 b 中
for i in b: #使用 for 迴圈遍歷排序後的單詞列表 b
print("{} {}".format(i, a[i])) #輸出每個單詞(存儲在變數 i 中)和它們的出現次數(從字典 a 中獲取)
except EOFError: #當遇到 EOFError 錯誤時,跳出迴圈
break