Vấn đề. Bạn có một cấu trúc từ điển lớn (băm) với nhiều cấp độ lồng nhau, các giá trị dưới dạng danh sách và từ điển lồng nhau, # sample.json{ Cố gắng rút ra giá trị từ điều này có thể là cách thông thường, nghĩa là, import jsonwith open(‘sample.json’) as data: có thể hoạt động, nhưng điều gì sẽ xảy ra nếu khóa bạn đang cố lấy không tồn tại hoặc có giá trị Không có (trống) hoặc nếu bạn đang duyệt qua một danh sách thì chỉ mục không có ở đó Bạn sẽ gặp lỗi IndexError hoặc KeyError hoặc ValueError xấu xí làm gián đoạn quy trình Điều gì sẽ xảy ra nếu bạn không muốn gặp lỗi chỉ vì bạn không thể tìm thấy giá trị? Đây là một chức năng đơn giản để xử lý tất cả các tình huống này. Nếu có bất kỳ dạng lỗi nào, hàm sẽ trả về giá trị Không có hoặc tùy chỉnh chỉ định giá trị mặc định tùy chỉnh giám đốcBây giờ hãy thử lấy một giá trị từ Dict mẫu ở trên, age_minimum = dictor(data, "properties.age.minimum") để có được một giá trị chỉ mục cụ thể, # gets Sports Đây là khóa giả không tồn tại, giá trị được trả về là Không có, không có lỗi Khóa hoặc Chỉ mục hoặc Giá trị lộn xộn, fake_val = dictor(data, "interests.blah.3.shmaaa") Nếu bạn cần chuyển một tham số vào đường dẫn tra cứu của mình, chỉ cần sử dụng định dạng, lookup = "interests" nếu không có giá trị hoặc không có khóa hoặc một số loại lỗi tra cứu, để trả về giá trị dự phòng tùy chỉnh thay vì Không có, hãy sử dụng giá trị mặc định dictor(data, "properties.occupation.8", default="Missing Occupation value") Nếu toàn bộ tệp JSON là một danh sách, tức là, [ để tra cứu giá trị Hex cho Blue, hãy sử dụng giá trị chỉ mục làm đối số thứ nhất import json0 để tra cứu Danh sách Danh sách lồng nhau, ví dụ: import json1 để lấy giá trị Màu, import json2 cuối cùng, nếu bạn muốn Dictor đưa ra một ngoại lệ nếu giá trị trả về là KHÔNG, hãy cung cấp cờ, “checknone=True” Nếu giá trị được kéo là Không, nó sẽ tăng ValueError Đây là một cách hay để kiểm tra các biến đã cấu hình của bạn và loại bỏ lỗi quy trình nếu tham số cấu hình thiếu một giá trị import jsonwith open(‘sample.json’) as data:11 import jsonwith open(‘sample.json’) as data:17 import jsonwith open(‘sample.json’) as data:31 import jsonwith open(‘sample.json’) as data:32 import jsonwith open(‘sample.json’) as data:12 import jsonwith open(‘sample.json’) as data:34 import jsonwith open(‘sample.json’) as data:35 import jsonwith open(‘sample.json’) as data:36 import jsonwith open(‘sample.json’) as data:37 import jsonwith open(‘sample.json’) as data:38 import jsonwith open(‘sample.json’) as data:39 age_minimum = dictor(data, "properties.age.minimum") 20
age_minimum = dictor(data, "properties.age.minimum") 21age_minimum = dictor(data, "properties.age.minimum") 22age_minimum = dictor(data, "properties.age.minimum") 23 age_minimum = dictor(data, "properties.age.minimum") 24age_minimum = dictor(data, "properties.age.minimum") 25age_minimum = dictor(data, "properties.age.minimum") 26age_minimum = dictor(data, "properties.age.minimum") 27______226age_minimum = dictor(data, "properties.age.minimum") 29 # gets Sports 20# gets Sports 21# gets Sports 22# gets Sports 23age_minimum = dictor(data, "properties.age.minimum") 26# gets Sports 25 # gets Sports 20# gets Sports 27# gets Sports 28# gets Sports 29# gets Sports 20fake_val = dictor(data, "interests.blah.3.shmaaa") 31fake_val = dictor(data, "interests.blah.3.shmaaa") 32 |