Dictionary ใน Python เป็นโครงสร้างข้อมูลที่แมปคีย์ (key) ไปยังค่า (value) เป็นคู่ key-value ใช้บ่อยมากและมีคุณสมบัติน่าสนใจ เขียนด้วยวงเล็บปีกกา {}
dict = {'day1':'Mon', 'day2':'Tue', 'day3':'Wed'}
คู่ key-value อยู่ในเครื่องหมายคำพูดเดี่ยว คั่นด้วย colon
การสร้าง Dictionary
โค้ดตัวอย่าง
Dict1 = {'day1':'Mon', 'day2':'Tue', 'day3':'Wed'}
print(type(Dict1))
print(Dict1)
# ใช้เมธอด dict()
dict2 = dict({('day1','Mon'),('day2','Tue'),('day3','Wed')})
print(type(dict2))
print(dict2)
ผลลัพธ์
{'day1': 'Mon', 'day2': 'Tue', 'day3': 'Wed'}
การเข้าถึงค่าใน Dictionary
ใช้วงเล็บเหลี่ยมกับคีย์ หรือเมธอด get()
โค้ดตัวอย่าง
dict = {'day1': 'Mon', 'day2': 'Tue', 'day3': 'Wed', 'weekend':{'d1':'Saturday','d2':'Sunday'}}
print(dict['day2'])
print(dict['weekend'])
print(dict.get('day3'))
ผลลัพธ์
Tue
{'d1': 'Saturday', 'd2': 'Sunday'}
Wed
เพิ่มองค์ประกอบใน Dictionary
เพิ่มคู่ key-value ใหม่ หรือเพิ่ม dictionary อีกตัวเป็น nested dictionary
โค้ดตัวอย่าง
dict = {'day1': 'Mon', 'day2': 'Tue', 'day3': 'Wed'}
dict['day4'] = 'Thu'
dict['day5'] = 'Fri'
print(dict)
ผลลัพธ์
{'day1': 'Mon', 'day2': 'Tue', 'day3': 'Wed', 'day4': 'Thu', 'day5': 'Fri'}
การอัปเดต Dictionary
อัปเดตโดยระบุคีย์และกำหนดค่าใหม่
โค้ดตัวอย่าง
dict = {'day1': 'Mon', 'day2': 'Tue', 'day3': 'Wed'}
dict['day1'] = 'Monday'
dict['day2'] = 'Tuesday'
print(dict)
ผลลัพธ์
{'day1': 'Monday', 'day2': 'Tuesday', 'day3': 'Wed'}
ลบองค์ประกอบของ Dictionary
ใช้คีย์เวิร์ด del ลบคีย์เฉพาะ หรือลบ dictionary ทั้งตัว เมธอด clear() ลบทุกค่า
โค้ดตัวอย่าง
dict = {'day1': 'Mon', 'day2': 'Tue', 'day3': 'Wed'}
print(dict)
del dict['day3']
print(dict)
dict.clear()
print(dict)
ผลลัพธ์
{'day1': 'Mon', 'day2': 'Tue', 'day3': 'Wed'}
{'day1': 'Mon', 'day2': 'Tue'}
{}
ข้อผิดพลาดทั่วไปเมื่อใช้ Dictionary
- ใช้
dict_name[key]อาจโยน exception ได้ ควรใช้get()แทน - ควรใช้
update(key=value)แทนการกำหนดโดยตรงdict_name[key] = 'new_value' - การคัดลอกด้วย
dict1 = dict2ทำให้ทั้งสองชี้ไปที่อ็อบเจกต์เดียวกัน ใช้copy()(shallow copy) แทน - ต้องการลำดับเฉพาะ ใช้
sorted() - พิจารณาเมื่อไหร่ควรใช้ dictionary เทียบกับ tuple, set ฯลฯ