Box 是一个极为轻量且功能强大的库,它让字典操作变得异常简单与直观,支持通过属性访问字典内容。
安装
使用 基本字典操作 Box 可以将任何字典快速转换为一个对象,这样你就可以用点号来访问字典的值。
1 2 3 4 5 from box import Boxmovie_data = {"name" : "Inception" , "director" : "Christopher Nolan" } movie = Box(movie_data) print (movie.name)
处理嵌套字典 Box 能够处理复杂的嵌套字典,并自动将所有内部字典转换为 Box 对象。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 from box import Boxcomplex_nested_data = { "university" : { "department" : "Engineering" , "courses" : [ {"name" : "Computer Science 101" , "students" : [{"name" : "Alice" }, {"name" : "Bob" }]}, {"name" : "Advanced Mathematics" , "students" : [{"name" : "Clara" }, {"name" : "Dennis" }]} ] } } university_box = Box(complex_nested_data) for course in university_box.university.courses: print (f"Course Name: {course.name} " ) for student in course.students: print (f"Student Name: {student.name} " )
高级应用 在处理更高级的场景时,Box 库可以非常方便地处理和变换嵌套的数据结构,同时提供强大的定制功能,比如自定义对象或方法的插入。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 from box import Boxdata = { "system" : { "name" : "Control System" , "components" : { "sensor" : {"type" : "temperature" , "value" : 23 }, "actuator" : {"type" : "heater" , "status" : "off" } } } } system_box = Box(data, box_dots=True ) def update_component_status (system, component, **kwargs ): if component in system.system.components: system.system.components[component].update(kwargs) print (f"Updated {component} : {system.system.components[component]} " ) else : print ("Component not found!" ) system_box.update_status = update_component_status.__get__(system_box, Box) system_box.update_status('sensor' , value=25 ) def check_status (system ): sensor_value = system.system.components.sensor.value if sensor_value > 24 : system.system.components.actuator.status = "on" print ("Actuator turned on due to high temperature." ) else : system.system.components.actuator.status = "off" print ("Actuator remains off." ) system_box.check_system_status = check_status.__get__(system_box, Box) system_box.check_system_status()