Python中的多级字典转换

6kkfgxo0  于 2022-12-10  发布在  Python
关注(0)|答案(1)|浏览(178)

所以,我试着做一个程序,里面有一个字典,就像下面这样。问题是,用户应该能够添加一个值到一个预先存在的字典中--一个字符串或者另一个字典。我不认为我会有那么多的麻烦,除非我希望更多的字典能够作为一个值添加到student中,然后更多的字典到那个程序中。等等。所以基本上我不知道要添加多少个字典,以及这条线要走多远,所以我不认为我可以硬编码来添加?
抱歉,如果我没有讲清楚,但基本上这个想法是用户将从城市开始,并被提示添加一个城市。从那里,他们可以进入城市并添加一所学校,或添加一个额外的城市等。只是真的很难实现这一点,我不想使用任何类型的导入。
我是Python的新手,如果这看起来很愚蠢,我很抱歉。

cities = {
    "city_1": {
        "school_1": {
            "class_1":{
                "student_1": {
                    "name": "Joe"
                },
                "student_2": {
                    "name": "Tim"
                }
            }
        },
        "school_2": {
            "class_1": {
                "student_1": {
                    "name": "Joe"
                },
                "student_2": {
                    "name": "Tim"
                }
            }
        }
    },
    "city_2": {
            "school_1": {
                "class_1": {
                    "student_1": {
                        "name": "Sarah"
                    },
                    "student_2": {
                        "name": "Jake"
                    }
                },
                "class_1": {
                    "student_1": {
                        "name": "Sarah"
                    },
                    "student_2": {
                        "name": "Jake"
                    }
                }
            }
    }
}
mrphzbgm

mrphzbgm1#

如果我没理解错的话,你需要一些处理嵌套字典的方法来执行基本的操作,这不是一个容易的任务,因为你需要编写逻辑来设置、获取、删除和迭代项。
您可以从Best way to get nested dictionary items开始,但下面是获取项目的方法:
第一个
如何设置项目:
第一次
如果你想要我提到的其他方法的实现,可以从ndicts包中找到NestedDict类(我是作者)。我从collections.abcMutableMapping类开始,导入它并定义了__getitem____setitem____delitem____iter____len__方法的逻辑。

相关问题