HomeLập trìnhPythonkeyerror trong Python...

keyerror trong Python – Cách khắc phục lỗi từ điển


Khi làm việc với từ điển trong Python, KeyError sẽ xuất hiện khi bạn cố gắng truy cập một mục không tồn tại trong từ điển Python.

Đây là một từ điển Python được gọi là student:

student = {
  "name": "John",
  "course": "Python",
}

Trong từ điển ở trên, bạn có thể truy cập tên “John” bằng cách tham chiếu khóa của nó – name. Đây là cách:

print(student["name"])
# John

Nhưng khi bạn cố gắng truy cập vào một khóa không tồn tại, bạn sẽ gặp lỗi KeyError. Đó là:

student = {
  "name": "John",
  "course": "Python",
}

print(student["age"])
# ...KeyError: 'age'

Điều này rất đơn giản để khắc phục khi bạn là người viết/kiểm tra mã – bạn có thể kiểm tra lỗi chính tả hoặc sử dụng khóa mà bạn biết có trong từ điển.

Nhưng trong các chương trình mà bạn yêu cầu đầu vào của người dùng để truy xuất một mục cụ thể từ từ điển, người dùng có thể không biết tất cả các mục tồn tại trong từ điển.

Trong bài viết này, bạn sẽ thấy cách sửa lỗi KeyError trong từ điển Python.

Chúng ta sẽ nói về các phương pháp bạn có thể sử dụng để kiểm tra xem một mục có tồn tại trong từ điển hay không trước khi thực hiện chương trình và phải làm gì khi không tìm thấy mục đó.

Đọc thêm  Làm thế nào — và tại sao — bạn nên sử dụng Trình tạo Python

Cách sửa lỗi khóa từ điển trong Python

Hai phương pháp mà chúng ta sẽ nói đến để sửa lỗi ngoại lệ KeyError trong Python là:

  • Các in từ khóa.
  • Các try except chặn.

Bắt đầu nào.

Cách khắc phục KeyError trong Python bằng cách sử dụng in từ khóa

Chúng ta có thể sử dụng in từ khóa để kiểm tra xem một mục có tồn tại trong từ điển hay không.

Sử dụng một if...else tuyên bố, chúng tôi trả lại mục nếu nó tồn tại hoặc trả lại một tin nhắn cho người dùng để thông báo cho họ rằng không thể tìm thấy mục đó.

Đây là một ví dụ:

student = {
  "name": "John",
  "course": "Python",
  "age": 20
}

getStudentInfo = input("What info about the student do you want? ")

if getStudentInfo in student:
    print(f"The value for your request is {student[getStudentInfo]}")
else:
	print(f"There is no parameter with the '{getStudentInfo}' key. Try inputing name, course, or age.")

Hãy cố gắng hiểu đoạn mã trên bằng cách chia nhỏ nó.

Đầu tiên chúng tôi tạo một từ điển gọi là student trong đó có ba mục/chìa khóa – name, courseage:

student = {
  "name": "John",
  "course": "Python",
  "age": 20
}

Tiếp theo, chúng tôi đã tạo một input() chức năng được gọi getStudentInfo: getStudentInfo = input("What info about the student do you want? "). Chúng tôi sẽ sử dụng giá trị từ input() hoạt động như một chìa khóa để lấy các mục từ từ điển.

Sau đó chúng tôi đã tạo ra một if...else câu lệnh để kiểm tra xem giá trị từ input() chức năng khớp với bất kỳ khóa nào trong từ điển:

if getStudentInfo in student:
    print(f"The value for your request is {student[getStudentInfo]}")
else:
	print(f"There is no parameter with the '{getStudentInfo}' key. Try inputing name, course, or age.")

Từ if...else tuyên bố trên, nếu giá trị từ input() chức năng tồn tại như một mục trong từ điển, print(f"The value for your request is {student[getStudentInfo]}") sẽ chạy. student[getStudentInfo] biểu thị student từ điển với giá trị nhận được từ input() chức năng hoạt động như một phím.

Đọc thêm  Biến toàn cục Python – Cách xác định ví dụ về biến toàn cục

Nếu giá trị từ input() chức năng không tồn tại, sau đó print(f"There is no parameter with the '{getStudentInfo}' key. Try inputing name, course, or age.") sẽ chạy thông báo cho người dùng rằng đầu vào của họ sai, với các đề xuất về các phím có thể họ có thể sử dụng.

Tiếp tục và chạy mã – nhập cả phím đúng và phím không chính xác. Điều này sẽ giúp xác thực các giải thích ở trên.

Cách khắc phục KeyError trong Python bằng cách sử dụng try except từ khóa

trong một try except khối, các try khối kiểm tra lỗi trong khi except khối xử lý bất kỳ lỗi nào được tìm thấy.

Hãy xem một ví dụ.

student = {
  "name": "John",
  "course": "Python",
  "age": 20
}

getStudentInfo = input("What info about the student do you want? ")

try:
    print(f"The value for your request is {student[getStudentInfo]}")
except KeyError:
    print(f"There is no parameter with the '{getStudentInfo}' key. Try inputing name, course, or age.")

Giống như chúng ta đã làm trong phần trước, chúng ta đã tạo từ điển và input() chức năng.

Chúng tôi cũng đã tạo các thông báo khác nhau cho bất kỳ kết quả nào chúng tôi nhận được từ input() chức năng.

Nếu không có lỗi, chỉ có mã trong try khối sẽ được thực thi – điều này sẽ trả về giá trị của khóa từ đầu vào của người dùng.

Nếu một lỗi được tìm thấy, chương trình sẽ quay trở lại except khối cho người dùng biết khóa không tồn tại trong khi đề xuất các khóa có thể sử dụng.

Đọc thêm  Liệt kê indexOf cho Python? Cách lấy chỉ mục của một mục trong danh sách bằng .index()

Tóm lược

Trong bài viết này, chúng tôi đã nói về KeyError trong Python. Lỗi này xảy ra khi chúng tôi cố gắng truy cập một mục không tồn tại trong từ điển bằng Python.

Chúng tôi đã thấy hai phương pháp có thể sử dụng để khắc phục sự cố.

Lần đầu tiên chúng tôi thấy cách chúng tôi có thể sử dụng in từ khóa để kiểm tra xem một mục có tồn tại hay không trước khi thực thi mã.

Cuối cùng, chúng tôi đã sử dụng try except khối để tạo hai khối mã – khối try khối chạy thành công nếu mục tồn tại trong khi except chạy nếu mục không tồn tại.

Chúc mừng mã hóa!



Zik.vn – Biên dịch & Biên soạn Lại

spot_img

Create a website from scratch

Just drag and drop elements in a page to get started with Newspaper Theme.

Buy Now ⟶

Bài viết liên quang

DMCA.com Protection Status