Cho danh sách từ (có thể trùng lặp). Trả về: (1) số lượng từ riêng biệt, (2) chuỗi tần suất của các từ theo thứ tự xuất hiện đầu tiên.
Ví dụ: ["Book", "Sound", "Language", "Computer", "Book", "Language"] → (4, '2 1 2 1').
Cách làm
- Dùng
OrderedDict(hoặc dict Python 3.7+) để giữ thứ tự chèn. - Duyệt từ, tăng đếm.
- Trả về
(len(dict), ' '.join(str(v) for v in dict.values())).
Ví dụ mã nguồn
from collections import OrderedDict
def solve(words):
d = OrderedDict()
for w in words:
if w in d:
d[w] += 1
else:
d[w] = 1
return len(d.keys()), ' '.join(str(d[k]) for k in d.keys())
words = ["Book", "Sound", "Language", "Computer", "Book", "Language"]
print(solve(words)) # (4, '2 1 2 1')
Đầu vào / Đầu ra
Input: ["Book", "Sound", "Language", "Computer", "Book", "Language"]
Output: (4, '2 1 2 1')