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

ข้อผิดพลาดที่พบบ่อยเมื่อใช้ Python Dictionary

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 ฯลฯ