ฉันมีไฟล์ CSV users.csvพร้อมรายชื่อผู้ใช้ชื่อผู้ใช้และข้อมูลอื่น ๆ :
username, userid, sidebar_side, sidebar_colour
"John Lennon", 90123412, "left", "blue"
"Paul McCartny", 30923833, "left", "black"
"Ringo Starr", 77392318, "right", "blue"
"George Harrison", 72349482, "left", "green"
ในไฟล์อื่นtoremove.txtฉันมีรายการหมายเลขผู้ใช้:
30923833
77392318
มีวิธีที่ฉลาดและมีประสิทธิภาพในการลบแถวทั้งหมดออกจากusers.csvไฟล์ที่มีรหัสtoremove.txtหรือไม่ ฉันได้เขียนแอพ Python อย่างง่ายเพื่อแยกไฟล์สองไฟล์และเขียนลงในไฟล์ใหม่เฉพาะบรรทัดที่ไม่พบtoremove.txtแต่มันช้ามากเป็นพิเศษ บางทีเวทมนตร์sedหรือบางอย่างawkอาจช่วยได้ที่นี่
นี่คือผลลัพธ์ที่ต้องการโดยพิจารณาจากตัวอย่างด้านบน:
username, userid, sidebar_side, sidebar_colour
"John Lennon", 90123412, "left", "blue"
"George Harrison", 72349482, "left", "green"
users.csvบรรทัดของไฟล์และ n toremove.txtสำหรับสายของ ฉันไม่แน่ใจจริงๆว่าจะทำอย่างไรกับความซับซ้อนที่ลดลง for u in users: if not any(toremove in u): outputfile.write(u)สรุปสาระสำคัญของมันคือ ฉันสามารถโพสต์ไว้ที่ Code Review
toremove.txtประหยัดรายการเป็นคีย์ ทำซ้ำ users.csv พิมพ์ที่ id ไม่อยู่ใน dict คุณได้รับการประมวลผล O (n) สำหรับทั้งtoremove.txtและusers.csvและการใช้หน่วยความจำ O (n) สำหรับtoremove.txt(ซึ่งอาจจะค่อนข้างเล็ก)