Trước khi chúng ta đi sâu vào KeyError trong Python, điều quan trọng là phải biết cách thiết lập từ điển trong python. Các gợi ý sau đây sẽ được thảo luận trong bài viết này
Từ điển trong Python
Khái niệm từ điển trong Python là một tập hợp ngẫu nhiên các giá trị, đã lưu trữ các giá trị dữ liệu giống như một bản đồ. Nó không giống như các kiểu dữ liệu khác chỉ chứa một giá trị duy nhất dưới dạng một phần tử. Nó giữ chìa khóa. cặp giá trị
Giá trị quan trọng làm cho nó hiệu quả hơn. Dấu hai chấm phân tách cặp khóa và giá trị và dấu 'dấu phẩy' phân tách từng khóa. Từ điển này trong python có chức năng tương tự như một từ điển thông thường. Các khóa tương ứng phải là duy nhất và thuộc các loại dữ liệu bất biến, chẳng hạn như chuỗi, số nguyên và bộ dữ liệu, nhưng các khóa-giá trị có thể được lặp lại và được phép thuộc bất kỳ loại nào. Có thể có các khóa, là các chuỗi tham chiếu đến các số và ngược lại
Chúng ta hãy xem cách một từ điển hoạt động thông qua ví dụ được mã hóa bên dưới
# Creating an empty Dictionary Dict = {} print["Null dict: "] print[Dict] # Creating Dictionary with Integer Keys Dict = {1: 'Fun', 2: 'And', 3: 'Frolic'} print["nDictionary with the use of Integer Keys: "] print[Dict] # Creating Dictionary with Mixed keys Dict = {'Name': 'Arun', 1: [12, 23, 34, 45]} print["nDictionary with the use of Mixed Keys: "] print[Dict] # Creating a Dictionary with dict[] method Dict = dict[{1: 'German', 2: 'language', 3:'is fun'}] print["nDictionary with the use of dict[]: "] print[Dict] # A Dictionary having each item as a Pair Dict = dict[[[1, 'Hello'], [2, 'Bye']]] print["nDictionary with each item as a pair: "] print[Dict]
Vì chúng ta đã rõ từ điển trong python là gì và nó hoạt động như thế nào. Bây giờ chúng ta hãy xem lỗi phím là gì. KeyError trong Python xuất hiện khi bạn cố gắng truy cập một khóa không có trong từ điển
Logic ánh xạ là một cấu trúc dữ liệu ánh xạ một bộ dữ liệu tới các bộ dữ liệu quan trọng khác. Do đó, đó là một lỗi, xảy ra khi ánh xạ được truy cập và không tìm thấy. Nó quen thuộc với một lỗi tra cứu trong đó lỗi ngữ nghĩa sẽ được nêu là khóa bạn đang tìm kiếm không được tìm thấy trong bộ nhớ của nó. Điều này có thể được minh họa rõ hơn trong đoạn mã dưới đây
Ở đây tôi đang cố gắng truy cập một khóa có tên là “D” không có trong từ điển. Do đó, lỗi được đưa ra ngay khi tìm thấy ngoại lệ. Tuy nhiên, các khóa còn lại có trong từ điển, được in chính xác, có các giá trị chính xác tương ứng với chúng.
// ages={'A':30,'B':28,'C':33} print[ages['A']] print[ages['B']] print[ages['C']] print[ages['D']] //
Cơ chế xử lý lỗi KeyError trong Python
Bất cứ ai gặp KeyError đều có thể xử lý nó một cách có trách nhiệm. Anh ấy có kỹ năng xem xét tất cả các đầu vào có thể có cho một chương trình nhất định và xử lý thành công bất kỳ đầu vào bấp bênh nào
Tùy thuộc vào trường hợp sử dụng của bạn, một số giải pháp này có thể tốt hơn hoặc cũng có thể không phải là giải pháp chính xác mà bạn đang tìm kiếm. Tuy nhiên, mục tiêu cuối cùng là ngăn các trường hợp ngoại lệ lỗi phím không mong muốn xuất hiện
Nếu có lỗi từ từ điển trong mã của riêng bạn, bạn có thể sử dụng. get[] để trích xuất giá trị tại khóa đã chỉ định hoặc giá trị mặc định. Chúng ta hãy xem một mẫu
//List of fruits and their prices. while[1]: fruits= {'Apple': 300, 'Papaya': 128, 'Kiwi': 233} fruit= input['Get price for: '] fruit1 = fruits.get[fruit] if fruit1: print[f'{fruit} is {fruit1} rupees.'] else: print[f"{fruit}'s cost is unknown."]
Một giải pháp chung cho KeyError
Giải pháp thông thường là bạn luôn có thể sử dụng khối try-ngoại trừ để giải quyết các vấn đề đó bằng cách tăng mã thích hợp và cung cấp giải pháp dự phòng. Kiểm tra mã dưới đây để rõ ràng hơn
// while[1]: ages = {'Jophi': 12, 'Rao': 20, 'Irvin': 16} person = input['Get age for: '] try: print[f'{person} is {ages[person]} years old.'] except KeyError: print[f"{person}'s age is unknown."] //
Đến đây, chúng ta đã kết thúc bài viết KeyError in Python này. Tôi hy vọng bài viết này cung cấp nhiều thông tin trong việc làm sáng tỏ ngoại lệ KeyError của Python và cách khắc phục nó. Ngoài ra, bây giờ bạn có thể biết rằng trong trường hợp vấn đề là tra cứu khóa từ điển trong mã của riêng bạn, thì bạn có thể chuyển từ truy cập khóa trực tiếp trên từ điển sang sử dụng. phương thức get[] với giá trị trả về mặc định
Nếu sự cố không đến từ mã của riêng bạn, thì hãy sử dụng khối thử ngoại trừ để kiểm soát tốt hơn luồng mã của bạn
Để có kiến thức chuyên sâu về Python cùng với các ứng dụng khác nhau của nó, bạn có thể đăng ký ngay bây giờ để tham gia khóa đào tạo Python trực tiếp với sự hỗ trợ 24/7 và quyền truy cập trọn đời
Có một câu hỏi cho chúng tôi?
Bạn có thể đã gặp phải KeyError khi làm việc với từ điển trong python. Trong bài viết này, chúng ta sẽ thảo luận về KeyError là gì, nó xảy ra như thế nào và cách chúng ta có thể tránh KeyError khi làm việc với từ điển python
Mục lục
Python KeyError là gì?
Nói một cách đơn giản, KeyError là một ngoại lệ được đưa ra bởi chương trình python khi chúng tôi cố gắng truy cập một giá trị từ từ điển bằng một khóa không có trong từ điển.
Ví dụ, hãy xem chương trình sau. Ở đây từ điển myDict có các khóa 1, 2 và 3 với các giá trị 1, 4 và 9 được liên kết với các khóa. Khi chúng tôi cố gắng truy cập từ điển bằng phím 4, chương trình sẽ báo lỗi KeyError. Điều này là do 4 không có trong từ điển dưới dạng khóa
myDict = {1: 1, 2: 4, 3: 9}
print["The dictionary is:", myDict]
print[myDict[4]]
đầu ra
The dictionary is: {1: 1, 2: 4, 3: 9}
Traceback [most recent call last]:
File "/home/aditya1117/PycharmProjects/pythonProject/string.py", line 3, in
print[myDict[4]]
KeyError: 4
Làm cách nào để tránh ngoại lệ Python KeyError?
Có nhiều cách khác nhau để tránh ngoại lệ KeyError. Hãy để chúng tôi thảo luận từng cái một
Sử dụng câu lệnh If other
Sử dụng câu lệnh if other, chúng ta có thể kiểm tra xem một khóa đã cho có trong các khóa của từ điển hay không trước khi truy cập giá trị. Nó giúp chúng tôi tránh ngoại lệ KeyError
myDict = {1: 1, 2: 4, 3: 9}
print["The dictionary is:", myDict]
key = 4
if key in myDict.keys[]:
print[myDict[key]]
else:
print["{} not a key of dictionary".format[key]]
đầu ra
The dictionary is: {1: 1, 2: 4, 3: 9}
4 not a key of dictionary
Hạn chế ở đây là mỗi lần chúng tôi phải kiểm tra xem một khóa nhất định có trong các khóa của từ điển hay không. Công việc bổ sung này có thể tránh được nếu chúng ta sử dụng phương thức get[] để truy cập các giá trị từ từ điển
Sử dụng phương thức get[]
Phương thức get[], khi được gọi trên từ điển, sẽ lấy khóa đã cho và một giá trị tùy chọn làm đầu vào. Nếu khóa đã cho có trong từ điển, nó sẽ cung cấp giá trị được liên kết với khóa dưới dạng đầu ra như sau
________số 8đầu ra
The dictionary is: {1: 1, 2: 4, 3: 9}
Key is: 3
Value associated to the key is: 9
Khi khóa đã cho không có trong từ điển, nó sẽ trả về Không có nếu không có giá trị tùy chọn nào được chuyển
// ages={'A':30,'B':28,'C':33} print[ages['A']] print[ages['B']] print[ages['C']] print[ages['D']] //0
đầu ra
// ages={'A':30,'B':28,'C':33} print[ages['A']] print[ages['B']] print[ages['C']] print[ages['D']] //1
Nếu chúng ta chuyển một giá trị tùy chọn làm đầu vào cho phương thức get[], nó sẽ trả về giá trị khi khóa đã cho không có trong từ điển
// ages={'A':30,'B':28,'C':33} print[ages['A']] print[ages['B']] print[ages['C']] print[ages['D']] //2
đầu ra
// ages={'A':30,'B':28,'C':33} print[ages['A']] print[ages['B']] print[ages['C']] print[ages['D']] //3
Sử dụng Thử ngoại trừ
Chúng ta có thể sử dụng python try except blocks để xử lý ngoại lệ KeyError. Để làm được điều đó, chúng tôi sẽ thực thi mã để truy cập giá trị bằng cách sử dụng khóa đã cho trong khối thử và sẽ xử lý ngoại lệ trong khối ngoại trừ như sau
The dictionary is: {1: 1, 2: 4, 3: 9}
Traceback [most recent call last]:
File "/home/aditya1117/PycharmProjects/pythonProject/string.py", line 3, in
print[myDict[4]]
KeyError: 4
0đầu ra
The dictionary is: {1: 1, 2: 4, 3: 9}
Traceback [most recent call last]:
File "/home/aditya1117/PycharmProjects/pythonProject/string.py", line 3, in
print[myDict[4]]
KeyError: 4
1Phần kết luận
Trong bài viết này, chúng tôi đã thảo luận về KeyErrors và cách xử lý chúng. Để tìm hiểu thêm về lập trình python, bạn có thể đọc bài viết này về hiểu danh sách. Bạn cũng có thể thích bài viết này về danh sách liên kết trong Python
Có liên quan
Đào tạo Python được đề xuất
Món ăn. Python 3 cho người mới bắt đầu
Hơn 15 giờ nội dung video với hướng dẫn có hướng dẫn cho người mới bắt đầu. Tìm hiểu cách tạo các ứng dụng trong thế giới thực và nắm vững kiến thức cơ bản