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

การรวมค่าจากพจนานุกรมของรายการใน Python


สมมติว่าเรามีพจนานุกรมหลามซึ่งมีรายการตามค่าในคู่ของค่าคีย์ เราจำเป็นต้องสร้างรายการซึ่งจะแสดงชุดค่าผสมที่เป็นไปได้ทั้งหมดของคีย์และค่าจากรายการที่กำหนด

พร้อมการจัดเรียงและสินค้า

ฟังก์ชันผลิตภัณฑ์จาก 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'}]]