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

โปรแกรมจัดเรียงวลีตามลักษณะที่ปรากฏใน Python


สมมติว่าเราได้รับสองรายการ 'วลี' ที่มีวลีที่เลือกสองสามประโยคและ 'ประโยค' ที่มีประโยคหลายประโยคที่อาจมีหรือไม่มีวลีจากรายการอื่น เราต้องค้นหาว่าวลีต่างๆ ในรายการแรกปรากฏในรายการที่สองหรือไม่ และจัดเรียงวลีของรายการแรกตามลักษณะที่ปรากฏในรายการที่สอง เราส่งคืน 'วลี' รายการที่เรียงลำดับเป็นผลลัพธ์

ดังนั้น หากการป้อนข้อมูลเป็นเหมือนวลี =['strong', 'durable', 'efficient'], routes =['ผลิตภัณฑ์มีความทนทานและมีประสิทธิภาพ' 'แข็งแรงและทนทาน' 'มีประสิทธิภาพ' 'ชอบ' เพราะมันมีประสิทธิภาพ'] ดังนั้นผลลัพธ์จะเป็น ['มีประสิทธิภาพ', 'ทนทาน', 'แข็งแกร่ง']

วลี 'มีประสิทธิภาพ' ปรากฏในประโยค 0, 2 และ 4 ซึ่งมีลักษณะที่ปรากฏมากที่สุด ดังนั้นจึงอยู่ที่จุดเริ่มต้นของผลลัพธ์ วลี 'durable' และ 'strong' ปรากฏในประโยคที่ 0 และ 1 และ 1 ตามลำดับ ดังนั้น วลีเหล่านี้จึงได้รับตำแหน่งถัดไปในผลลัพธ์

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • cnt :=แผนที่ใหม่
  • สำหรับแต่ละคุณลักษณะในวลี ให้ทำ
    • cnt[คุณสมบัติ] :=0
  • สำหรับแต่ละคำตอบในประโยค ทำ
    • p :=รายการใหม่ที่มีคำตอบกลับ
    • s :=ชุดใหม่จากพี่
    • สำหรับแต่ละ i ใน s ทำ
      • ถ้าฉันอยู่ใน cnt แล้ว
        • cnt[i] :=cnt[i] + 1
  • res :=รายการใหม่ที่มีคู่ (k, cnt[k]) สำหรับทุก ๆ k ใน cnt
  • จัดเรียงรายการ res ตามจำนวน k
  • ส่งคืน res รายการโดยไม่รวมค่าการนับ k

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

def solve(phrases, sentences):
   cnt = {}
   for feature in phrases:
      cnt[feature] = 0
   for response in sentences:
      p = response.split()
      s = set(p)
      for i in s:
         if i in cnt:
            cnt[i] += 1
   res = [[k, cnt[k]] for k in cnt]
   res.sort(key = lambda x:(-x[1], phrases.index(x[0])))
   return [i[0] for i in res]

print(solve(['strong', 'durable', 'efficient'], ['the product is durable and efficient', 'strong and durable', 'it is efficient', 'like it because it is efficient']))

อินพุต

['strong', 'durable', 'efficient'],
['the product is durable and efficient', 'strong and durable', 'it is
efficient', 'like it because it is efficient']

ผลลัพธ์

['efficient', 'durable', 'strong']