Computer >> Máy Tính >  >> Lập trình >> Python

Xử lý các khóa bị thiếu trong từ điển Python

Trong Python, có một vùng chứa được gọi là Từ điển. Trong từ điển, chúng ta có thể ánh xạ các khóa theo giá trị của nó. Sử dụng từ điển, các giá trị có thể được truy cập trong thời gian không đổi. Nhưng khi không có các khóa đã cho, nó có thể xảy ra một số lỗi.

Trong phần này, chúng ta sẽ xem cách xử lý các loại lỗi này. Nếu chúng tôi đang cố gắng truy cập các khóa bị thiếu, nó có thể trả lại các lỗi như thế này.

Mã mẫu

country_dict = {'India' : 'IN', 'Australia' : 'AU', 'Brazil' : 'BR'}
print(country_dict['Australia'])
print(country_dict['Canada']) # This will return error

Đầu ra

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'

Sử dụng phương thức get () để xử lý KeyError

Chúng ta có thể sử dụng phương thức get để kiểm tra khóa. Phương thức này nhận hai tham số. Giá trị đầu tiên là khóa và giá trị thứ hai là giá trị mặc định. Khi tìm thấy khóa, nó sẽ trả về giá trị được liên kết với khóa, nhưng khi khóa không có mặt, nó sẽ trả về giá trị mặc định, được chuyển dưới dạng đối số thứ hai.

Mã mẫu

country_dict = {'India' : 'IN', 'Australia' : 'AU', 'Brazil' : 'BR'}
print(country_dict.get('Australia', 'Not Found'))
print(country_dict.get('Canada', 'Not Found'))

Đầu ra

AU
Not Found

Sử dụng phương thức setdefault () để xử lý KeyError

Phương thức setdefault () này tương tự như phương thức get (). Nó cũng có hai đối số như get (). Cái đầu tiên là khóa và cái thứ hai là giá trị mặc định. Sự khác biệt duy nhất của phương pháp này là, khi thiếu một khóa, nó sẽ thêm các khóa mới với giá trị mặc định.

Mã mẫu

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'])

Đầu ra

AU
Not Present

Sử dụng sắc lệnh mặc định

Sắc lệnh mặc định là một vùng chứa. Nó nằm ở mô-đun bộ sưu tập trong Python. Defaultdict lấy nhà máy mặc định làm đối số của nó. Ban đầu, nhà máy mặc định được đặt thành 0 (số nguyên). Khi một khóa không xuất hiện, nó sẽ trả về giá trị của nhà sản xuất mặc định.

Chúng ta không cần chỉ định lại nhiều lần các phương thức, vì vậy nó cung cấp phương thức nhanh hơn cho các đối tượng từ điển.

Mã mẫu

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'])

Đầu ra

AU
Key Not Present