สมมติว่าเรามีรายการคำ คำเหล่านี้อาจเกิดขึ้นหลายครั้ง เราต้องแสดงความถี่ของคำเหล่านี้และนับว่ามีคำที่แตกต่างกันกี่คำ
ดังนั้น หากอินพุตเหมือนกับคำ =["หนังสือ" "เสียง" "ภาษา" "คอมพิวเตอร์" "หนังสือ" "ภาษา"] ผลลัพธ์จะเป็น (4, '2 1 2 1') เพราะมีคำที่แตกต่างกันสี่คำ คำแรกและคำที่สามเกิดขึ้นสองครั้ง
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- d:=คำสั่ง OrderedDict เพื่อจัดเก็บรายการตามลำดับการแทรก
- สำหรับแต่ละคำ ให้ทำ
- ถ้า w อยู่ใน d แล้ว
- d[w] :=d[w] + 1
- มิฉะนั้น
- d[w] :=1
- ถ้า w อยู่ใน d แล้ว
- ขนาดของรายการคีย์ทั้งหมดใน d และรวมค่าทั้งหมดจาก d ลงในสตริงแล้วส่งคืน
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น
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))
อินพุต
["Book", "Sound", "Language", "Computer", "Book", "Language"]
ผลลัพธ์
(4, '2 1 2 1')