✍️ وقتی فراوانیها آمادهاند، برای «اولین عضو یکتا» دوباره خود فهرست اصلی را از چپ به راست میخوانیم. اولین عضوی که شمارشش یک است جواب خواهد بود. اولین بودن درباره جای آن در ورودی است، نه کوچک بودن الفبایی یا کم بودن مقدار. مرتب کردن فهرست ممکن است دقیقاً همان اطلاعات لازم را از بین ببرد.
مثلاً برای ['سیب', 'گلابی', 'سیب', 'آلو'] جواب گلابی است؛ آلو هم یکتا است، ولی دیرتر دیده شده. حالا این برنامه را دنبال کن:
words = ['باد', 'ابر', 'باد', 'نور', 'ابر', 'ماه']
counts = {}
for word in words:
counts[word] = counts.get(word, 0) + 1
answer = None
for word in words:
if counts[word] == 1:
answer = word
break
print(answer)
دو واژه اول بعداً تکرار شدهاند. موقع تصمیم گرفتن فقط ظاهر پیشوند ورودی را نبین؛ جدول، تعداد در کل فهرست را ثبت کرده است. خطای رایج، برگرداندن اولین کلمهای است که تا همان لحظه تکرار نشده؛ ممکن است در ادامه دوباره بیاید. break هم مهم است، چون جلوی جایگزینی جواب با یک یکتای دیرتر را میگیرد.
فعالیت شما
خروجی print را بر اساس فراوانی کل ورودی و اولین جای وقوع انتخاب کن.