Làm cách nào để sửa lỗi keyerror trong python?

# Bắt đầu. giá trị = {"mèo". 1, "cuốn sách". 2} # Không có từ python trong từ điển. print[values["python"]]Traceback [lần gọi gần đây nhất]. Tập tin "C. \chương trình\chương trình. py", dòng 8, inprint[values["python"]] KeyError. 'con trăn'

Ngoại lệ Key Error trong Python là một ngoại lệ mà hầu hết các lập trình viên đều gặp phải, đặc biệt là khi họ bắt đầu làm quen với từ điển Python

Trong bài này bạn sẽ học

  • Lỗi khóa có nghĩa là gì trong Python
  • Cách sửa lỗi key trong Python
  • Cách xử lý lỗi phím

Mục lục

  • Lỗi phím nghĩa là gì?
  • Làm cách nào để sửa các lỗi chính trong Python?
  • Làm thế nào để bạn xử lý các lỗi quan trọng?
  • Tránh KeyError bằng vòng lặp For
  • Cách tiếp cận chung cho các ngoại lệ
  • Phần kết luận

Lỗi phím nghĩa là gì?

Lỗi khóa là một cách để Python cho bạn biết rằng bạn đang cố truy cập một khóa không tồn tại trong từ điển

Đây là một ví dụ, tôi tạo một tệp có tên là keyerror. py…

Tôi định nghĩa một từ điển chứa các quốc gia và thủ đô của họ

Đầu tiên tôi in thủ đô của Ý…

…sau đó tôi in thủ đô của Pháp

countries = {'Italy': 'Rome', 'Poland': 'Warsaw', 'UK': 'London'}

print[countries['Italy']]
print[countries['France']]

Và đây là những gì tôi nhận được khi chạy nó

Rome
Traceback [most recent call last]:
  File "keyerror.py", line 3, in 
    print[countries['France']]
KeyError: 'France'

Như bạn có thể thấy giá trị liên quan đến khóa đầu tiên của từ điển [Ý] được in như chúng ta muốn

Nhưng có điều gì đó xảy ra với câu lệnh in thứ hai

Một KeyError xuất hiện trong đầu ra và đó là vì…

Python phát sinh lỗi KeyError khi bạn cố truy cập một khóa không tồn tại trong từ điển

Trong trường hợp này, từ khóa 'Pháp' không tồn tại trong từ điển các quốc gia

Cũng lưu ý cách Python có thể cho biết ngoại lệ đã xảy ra ở dòng mã nào. Điều này rất hữu ích để tìm ra nguyên nhân lỗi một cách nhanh chóng khi bạn có hàng trăm hoặc hàng nghìn dòng mã.

Core skill: When Python raises an exception a traceback is included. A traceback is used to give you all the details you need to understand the type of exception and to find what has caused it in your code. 

Có ý nghĩa?

Làm cách nào để sửa các lỗi chính trong Python?

Có 2 cách sửa lỗi key rất cơ bản nếu chương trình của bạn đơn giản

  1. Tránh tham chiếu khóa không tồn tại trong từ điển. điều này có thể hợp lý nếu, ví dụ, giá trị của khóa đã bị viết sai chính tả. Nó không áp dụng cho trường hợp cụ thể này
  2. Thêm khóa còn thiếu vào từ điển. trong trường hợp này, chúng tôi sẽ thêm 'Pháp' làm chìa khóa cho từ điển như một phần của định nghĩa ban đầu

Nhưng đó không phải là những cách tiếp cận mạnh mẽ và không ngăn được lỗi tương tự xảy ra lần nữa trong tương lai

Thay vào đó, hãy xem xét hai lựa chọn khác…

Lựa chọn đầu tiên

Yêu cầu Python không trả về KeyError nếu chúng tôi cố gắng truy cập một khóa không tồn tại trong từ điển mà thay vào đó trả về một giá trị mặc định

Giả sử chúng ta muốn trả về giá trị mặc định 'Không xác định' cho bất kỳ khóa nào không có trong từ điển…

Đây là cách chúng ta có thể làm điều đó bằng cách sử dụng phương thức get[] từ điển

countries = {'Italy': 'Rome', 'Poland': 'Warsaw', 'UK': 'London'}
default = 'Unknown'

print[countries.get['Italy', default]]
print[countries.get['France', default]]

Và đầu ra trở thành

Rome
Unknown

Vì vậy, ít nhất theo cách này, chúng tôi có nhiều quyền kiểm soát hơn đối với cách chương trình của chúng tôi chạy

Sự lựa chọn thứ hai

Xác minh xem một khóa có tồn tại trong từ điển hay không bằng cách sử dụng toán tử in trả về giá trị boolean [Đúng hoặc Sai] dựa trên sự tồn tại của khóa đó trong từ điển

Trong ví dụ bên dưới, tôi sử dụng toán tử in cùng với câu lệnh if else Python để xác minh xem một khóa có tồn tại hay không trước khi truy cập giá trị của nó

countries = {'Italy': 'Rome', 'Poland': 'Warsaw', 'UK': 'London'}

if 'France' in countries:
    print["The capital of France is %" % countries['France']]
else:
    print["The capital of France is unknown"]

Khi tôi chạy nó, tôi thấy…

The capital of France is unknown

Đây cũng là một lựa chọn tốt

Làm thế nào để bạn xử lý các lỗi quan trọng?

Trong phần trước, tôi đã giới thiệu phương thức get[] trong từ điển như một cách để trả về một giá trị mặc định nếu một khóa không tồn tại trong từ điển của chúng ta

Nhưng, điều gì sẽ xảy ra nếu chúng ta không chuyển giá trị mặc định làm đối số thứ hai cho phương thức get[]?

Hãy thử xem, việc làm quen với các phương thức tích hợp sẽ tạo ra sự khác biệt lớn khi bạn viết mã

countries = {'Italy': 'Rome', 'Poland': 'Warsaw', 'UK': 'London'}

print[countries.get['Italy']]
print[countries.get['France']]

Bạn có biết đầu ra là gì không?

________số 8

Điều thú vị là lần này Python không đưa ra ngoại lệ KeyError…

…phương thức get[] chỉ trả về Không có nếu khóa không tồn tại trong từ điển

Điều này có nghĩa là chúng ta có thể triển khai logic có điều kiện trong mã của mình dựa trên giá trị được trả về bởi phương thức get[]. Đây là một ví dụ

countries = {'Italy': 'Rome', 'Poland': 'Warsaw', 'UK': 'London'}
  
capital = countries.get['France']

if capital:
    print["The capital is %s" % capital]
else:
    print["The capital is unknown"]

đầu ra là

Rome
Traceback [most recent call last]:
  File "keyerror.py", line 3, in 
    print[countries['France']]
KeyError: 'France'
0

Một cách hay để tránh ngoại lệ xấu xí đó 🙂

Tránh KeyError bằng vòng lặp For

Thông thường, một cách để xử lý lỗi là sử dụng các cấu trúc lập trình ngăn các lỗi đó xảy ra

Tôi đã đề cập trước đó rằng Lỗi Key xảy ra khi bạn cố gắng truy cập một khóa không tồn tại trong từ điển

Vì vậy, một cách để ngăn KeyError là đảm bảo rằng bạn chỉ truy cập các khóa tồn tại trong từ điển

Được rồi, nhưng bằng cách nào?

Bạn có thể sử dụng vòng lặp for đi qua tất cả các khóa của từ điển…

Điều này sẽ đảm bảo rằng chỉ những khóa có trong từ điển mới được sử dụng trong mã của chúng tôi

Hãy xem xét một ví dụ

Rome
Traceback [most recent call last]:
  File "keyerror.py", line 3, in 
    print[countries['France']]
KeyError: 'France'
1

Và đầu ra là…

Rome
Traceback [most recent call last]:
  File "keyerror.py", line 3, in 
    print[countries['France']]
KeyError: 'France'
2

Vòng lặp for có thể được sử dụng để duyệt qua tất cả các khóa trong từ điển và để đảm bảo bạn không truy cập các khóa không thuộc từ điển. Điều này ngăn không cho ngoại lệ Python KeyError xảy ra

Cách tiếp cận chung cho các ngoại lệ

Cuối cùng, một cách tiếp cận chung mà bạn có thể sử dụng với bất kỳ trường hợp ngoại lệ nào là khối thử ngoại trừ

Điều này sẽ ngăn Python tăng ngoại lệ KeyError và nó sẽ cho phép bạn xử lý ngoại lệ trong khối except

Đây là cách bạn có thể làm điều đó trong ví dụ của chúng tôi

Rome
Traceback [most recent call last]:
  File "keyerror.py", line 3, in 
    print[countries['France']]
KeyError: 'France'
3

Như bạn có thể thấy, trong trường hợp này, khối except được viết riêng để xử lý ngoại lệ KeyError

Trong trường hợp này, chúng ta cũng có thể sử dụng một ngoại lệ chung [xóa KeyError]…

Rome
Traceback [most recent call last]:
  File "keyerror.py", line 3, in 
    print[countries['France']]
KeyError: 'France'
4

Vì vậy, chúng ta có thực sự cần chỉ định loại ngoại lệ không?

Sẽ rất hữu ích nếu khối mã thử có thể đưa ra nhiều loại ngoại lệ và chúng tôi muốn xử lý từng loại khác nhau

Phần kết luận

Bây giờ bạn đã có một ý tưởng khá hay về cách xử lý ngoại lệ KeyError trong Python

Có rất ít tùy chọn dành cho bạn, hãy chọn tùy chọn bạn thích…

Bạn sẽ sử dụng phương thức get[] hay toán tử in?

Bạn có thích cách tiếp cận thử ngoại trừ không?

Hãy cho tôi biết trong phần bình luận bên dưới 🙂

Bạn đang bắt đầu với Python?

Tôi đã tạo một danh sách kiểm tra để bạn nhanh chóng tìm hiểu những kiến ​​thức cơ bản về Python. Bạn có thể tải về miễn phí tại đây

Bài viết liên quan

Độ lệch chuẩn của gấu trúc. Phân tích dữ liệu của bạn với Python

Tìm kiếm video Youtube bằng Python với 6 dòng mã

Cách viết danh sách vào tệp bằng Python [Có ví dụ]

Claudio Sabato

Tôi là Trưởng nhóm công nghệ, Kỹ sư phần mềm và Huấn luyện viên lập trình. Tôi muốn giúp bạn trong hành trình trở thành Nhà phát triển siêu hạng

Tại sao tôi nhận được KeyError trong Python?

Python KeyError được nâng lên khi chúng tôi cố gắng truy cập một khóa từ dict, không tồn tại. Đây là một trong những lớp ngoại lệ được tích hợp sẵn và được phát triển bởi nhiều mô-đun hoạt động với lệnh hoặc đối tượng có cặp khóa-giá trị

Làm cách nào để trả về KeyError trong Python?

Nếu Lỗi Key xuất hiện do tra cứu khóa từ điển không thành công trong mã của riêng bạn, bạn có thể sử dụng. get[] để trả về giá trị được tìm thấy tại khóa đã chỉ định hoặc giá trị mặc định .

KeyError có phải là lỗi thời gian chạy không?

Trong bài viết này, chúng tôi sẽ xử lý lỗi Key, đây là ví dụ về lỗi thời gian chạy ; .

KeyError Không có nghĩa là gì trong Python?

KeyError có nghĩa là bạn đang cố lấy một giá trị từ lệnh có khóa không tồn tại. Trong dòng hiển thị, bạn có tự. side_map[side]] và KeyError. Không có nghĩa là khóa là Không, vì vậy biến phụ của bạn có giá trị Không có . Đó là những gì chúng ta biết khi nhìn vào mã, lỗi và không có thêm ngữ cảnh.

Chủ Đề