ปัญหา
ให้ Dictionary dictA ต้องการสร้าง Dictionary ใหม่ที่มีเฉพาะคีย์ที่ต้องการ
วิธีที่ 1: Dictionary Comprehension (แนะนำ)
dictA = {'Sun': '2 PM', 'Tue': '5 PM', 'Wed': '3 PM', 'Fri': '9 PM'}
wanted = {'Fri', 'Sun'}
result = {k: dictA[k] for k in wanted if k in dictA}
print(result) # {'Fri': '9 PM', 'Sun': '2 PM'}
วิธีที่ 2: ใช้ dict() กับ generator
wanted = ['Fri', 'Wed']
result = dict((k, dictA[k]) for k in wanted if k in dictA)
print(result) # {'Fri': '9 PM', 'Wed': '3 PM'}
วิธีที่ 3: ใช้ operator.itemgetter (สำหรับหลายคีย์)
from operator import itemgetter
try:
result = dict(zip(wanted, itemgetter(*wanted)(dictA)))
except KeyError:
# จัดการคีย์ที่ไม่มี
pass
สรุป
Dictionary Comprehension อ่านง่ายและมีประสิทธิภาพดีที่สุดสำหรับกรณีทั่วไป