สมมติว่าเราได้รับสองรายการ 'วลี' ที่มีวลีที่เลือกสองสามประโยคและ 'ประโยค' ที่มีประโยคหลายประโยคที่อาจมีหรือไม่มีวลีจากรายการอื่น เราต้องค้นหาว่าวลีต่างๆ ในรายการแรกปรากฏในรายการที่สองหรือไม่ และจัดเรียงวลีของรายการแรกตามลักษณะที่ปรากฏในรายการที่สอง เราส่งคืน 'วลี' รายการที่เรียงลำดับเป็นผลลัพธ์
ดังนั้น หากการป้อนข้อมูลเป็นเหมือนวลี =['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
- ถ้าฉันอยู่ใน cnt แล้ว
- 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']