สมมติว่าเรามีพจนานุกรมหลามซึ่งมีรายการตามค่าในคู่ของค่าคีย์ เราจำเป็นต้องสร้างรายการซึ่งจะแสดงชุดค่าผสมที่เป็นไปได้ทั้งหมดของคีย์และค่าจากรายการที่กำหนด
พร้อมการจัดเรียงและสินค้า
ฟังก์ชันผลิตภัณฑ์จาก itertools สามารถใช้เพื่อสร้างผลิตภัณฑ์ crtesian ของ iterable ที่ให้มาเป็นพารามิเตอร์ได้ เราจัดเรียงพจนานุกรมและใช้สองลูปเพื่อสร้างการรวมกันของคู่ค่าคีย์ที่เป็นไปได้ทั้งหมดจากรายการในพจนานุกรม
ตัวอย่าง
import itertools as it Adict = { "Day": ["Tue", "Wed"], "Time": ["2pm", "9am"], } # Sorting Adict sorted_Adict = sorted(Adict) # Using product after sorting res = [dict(zip(sorted_Adict, prod)) for prod in it.product(*(Adict[sorted_Adict] for sorted_Adict in sorted_Adict))] # Printing output print(res)
ผลลัพธ์
การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -
[{'Day': 'Tue', 'Time': '2pm'}, {'Day': 'Tue', 'Time': '9am'}, {'Day': 'Wed', 'Time': '2pm'}, {'Day': 'Wed', 'Time': '9am'}]
มีซิป
ในแนวทางนี้ เราใช้ฟังก์ชัน zip ร่วมกับฟังก์ชันผลิตภัณฑ์ itertools เพื่อสร้างชุดค่าผสมของคีย์และค่าที่เป็นไปได้ทั้งหมดในรูปแบบพจนานุกรมของรายการ
ตัวอย่าง
import itertools as it Adict = { "Day": ["Tue", "Wed"], "Time": ["2pm", "9am"], } # Sorting Adict sorted_Adict = sorted(Adict) # Using product after sorting res = [[{key: value} for (key, value) in zip(Adict, values)] for values in it.product(*Adict.values())] # Printing output print(res)
ผลลัพธ์
การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -
[[{'Day': 'Tue'}, {'Time': '2pm'}], [{'Day': 'Tue'}, {'Time': '9am'}], [{'Day': 'Wed'}, {'Time': '2pm'}], [{'Day': 'Wed'}, {'Time': '9am'}]]