Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมนับคำที่ไม่ซ้ำและความถี่ของแต่ละคำใน Python

สมมติว่าเรามีรายการคำ คำเหล่านี้อาจเกิดขึ้นหลายครั้ง เราต้องแสดงความถี่ของคำเหล่านี้และนับว่ามีคำที่ไม่ซ้ำกันกี่คำ

ตัวอย่างเช่น หาก words = ["Book", "Sound", "Language", "Computer", "Book", "Language"] ผลลัพธ์จะเป็น (4, '2 1 2 1') เพราะมีคำที่ไม่ซ้ำ 4 คำ คำที่ 1 และ 3 เกิดขึ้น 2 ครั้ง

ขั้นตอนการแก้ปัญหา

  • d := OrderedDict เพื่อเก็บรายการตามลำดับการแทรก
  • สำหรับแต่ละ w ใน words:
    • ถ้า w อยู่ใน d: d[w] := d[w] + 1
    • มิฉะนั้น: d[w] := 1
  • คืนค่าคู่ของ (ขนาดของ keys ใน 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')