เมื่อต้องการตรวจสอบว่าตัวอักษรในรูปแบบ (pattern) ปรากฏในสตริงตามลำดับที่ถูกต้องหรือไม่ ใช้ OrderedDict.fromkeys() เพื่อเก็บลำดับตัวอักษรที่ไม่ซ้ำ
ตัวอย่างโค้ด
from collections import OrderedDict
def check_order(text, pattern):
od = OrderedDict.fromkeys(text)
pattern_idx = 0
for char in od:
if char == pattern[pattern_idx]:
pattern_idx += 1
if pattern_idx == len(pattern):
return 'The order of pattern is correct'
return 'The order of pattern is incorrect'
text = 'Hi Mark'
pattern = 'Ma'
print("The string is:", text)
print("The pattern is:", pattern)
print(check_order(text, pattern))ผลลัพธ์
The string is: Hi Mark The pattern is: Ma The order of pattern is correct
คำอธิบาย
OrderedDict.fromkeys(text)สร้างดิกชันนารีที่มีคีย์เป็นตัวอักษรใน text ตามลำดับปรากฏครั้งแรก (ลบซ้ำ)วนลูปผ่านคีย์ของ OrderedDict (ซึ่งเรียงตามลำดับใน text)
พยายามจับคู่กับ pattern ทีละตัวอักษร
ถ้าจับคู่ครบ pattern ทั้งหมด → ลำดับถูกต้อง
หมายเหตุ: Python 3.7+ dict ธรรมดาก็รักษาลำดับได้แล้ว แต่ OrderedDict ชัดเจนกว่าสำหรับวัตถุประสงค์นี้