ใน Python มีหนึ่งคอนเทนเนอร์ที่เรียกว่าพจนานุกรม ในพจนานุกรม เราสามารถจับคู่คีย์กับค่าของมันได้ การใช้พจนานุกรมสามารถเข้าถึงค่าได้ในเวลาคงที่ แต่เมื่อไม่มีคีย์ที่ให้มา อาจเกิดข้อผิดพลาดบางอย่างได้
ในส่วนนี้เราจะมาดูวิธีจัดการกับข้อผิดพลาดประเภทนี้ หากเรากำลังพยายามเข้าถึงคีย์ที่หายไป ระบบอาจแสดงข้อผิดพลาดเช่นนี้
โค้ดตัวอย่าง
country_dict = {'India' : 'IN', 'Australia' : 'AU', 'Brazil' : 'BR'} print(country_dict['Australia']) print(country_dict['Canada']) # This will return error
ผลลัพธ์
AU --------------------------------------------------------------------------- KeyErrorTraceback (most recent call last) <ipython-input-2-a91092e7ee85> in <module>() 2 3 print(country_dict['Australia']) ----> 4 print(country_dict['Canada'])# This will return error KeyError: 'Canada'
การใช้ get() วิธีการจัดการกับ KeyError
เราสามารถใช้วิธีการรับเพื่อตรวจสอบกุญแจได้ วิธีนี้ใช้พารามิเตอร์สองตัว อันแรกคือคีย์ และอันที่สองคือค่าดีฟอลต์ เมื่อพบคีย์ มันจะคืนค่าที่เกี่ยวข้องกับคีย์ แต่เมื่อคีย์ไม่อยู่ มันจะคืนค่าดีฟอลต์ ซึ่งจะถูกส่งผ่านเป็นอาร์กิวเมนต์ที่สอง
โค้ดตัวอย่าง
country_dict = {'India' : 'IN', 'Australia' : 'AU', 'Brazil' : 'BR'} print(country_dict.get('Australia', 'Not Found')) print(country_dict.get('Canada', 'Not Found'))
ผลลัพธ์
AU Not Found
การใช้ setdefault() วิธีการจัดการกับ KeyError
เมธอด setdefault() นี้คล้ายกับเมธอด get() นอกจากนี้ยังใช้สองอาร์กิวเมนต์เช่น get() อันแรกคือคีย์และอันที่สองคือค่าดีฟอลต์ ความแตกต่างเพียงอย่างเดียวของวิธีนี้คือ เมื่อมีคีย์ที่หายไป มันจะเพิ่มคีย์ใหม่ด้วยค่าเริ่มต้น
โค้ดตัวอย่าง
country_dict = {'India' : 'IN', 'Australia' : 'AU', 'Brazil' : 'BR'} country_dict.setdefault('Canada', 'Not Present') #Set a default value for Canada print(country_dict['Australia']) print(country_dict['Canada'])
ผลลัพธ์
AU Not Present
การใช้ defaultdict
defaultdict คือคอนเทนเนอร์ ตั้งอยู่ที่โมดูลคอลเลกชันใน Python defaultdict ใช้ค่าเริ่มต้นจากโรงงานเป็นอาร์กิวเมนต์ เริ่มแรกโรงงานเริ่มต้นถูกตั้งค่าเป็น 0 (จำนวนเต็ม) เมื่อไม่มีคีย์ ระบบจะคืนค่าโรงงานเริ่มต้น
เราไม่จำเป็นต้องระบุเมธอดซ้ำแล้วซ้ำเล่า ดังนั้นจึงให้วิธีที่เร็วกว่าสำหรับอ็อบเจ็กต์พจนานุกรม
โค้ดตัวอย่าง
import collections as col #set the default factory with the string 'key not present' country_dict = col.defaultdict(lambda: 'Key Not Present') country_dict['India'] = 'IN' country_dict['Australia'] = 'AU' country_dict['Brazil'] = 'BR' print(country_dict['Australia']) print(country_dict['Canada'])
ผลลัพธ์
AU Key Not Present