从点表示法进行 Python 字典操作



我想做的是从字符串创建一个"字典路径"。我不认为这是正确的术语,但基本上,如果我有一本看起来像这样的字典:

'myDict'{
    'classes':{
        'students':{
            'grades':{
                'grade':'A'
            }
        }  
    }
}

我有一个名为 current_dict 的变量,现在里面有myDict,所以current_dict = myDict,以及一个存储为 "classes.students.grades" 的字符串,我想操作该字符串以便我有[classes][students][grades]。但是,我希望能够使用它来重新分配current_dict。所以,我想说current_dict = myDict['classes']['students']['grades'].我尝试将字符串转换为 "[classes][students][grades]" ,但这不起作用,因为它将整个事情标识为单个字符串,包括括号。如何操作"classes.students.grades"以便重新分配current_dict = myDict['classes']['students]['grades']?因此,在我完成此操作后,current_dictgrades,如下所示:

{
    grade': 'A'
}

像这样的东西?

current_dict = myDict
mystring = "classes.students.grades"
myPath = mystring.split(".")
for part in myPath:
    current_dict = current_dict[part]

但我认为可能有一种更简单的方法可以做到这一点,如果你告诉我们你想要这个做什么。

试试这个:

string1='classes.students.grades'
string2=string1.split('.')
myDict[string2[0]][string2[1]][string2[2]]['grade2']='B'
myDict

我的输出是

{'classes': {'students': {'grades': {'grade1': 'A', 'grade2': 'B'}}}}

请注意,我在字典中将年级更改为 1 年级。为什么不使用熊猫数据帧?

最新更新