点符号的Python字典操作

时间:2016-01-31 20:44:15

标签: python dictionary syntax

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

'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_dict将为grades,并且看起来像:

{
    grade': 'A'
}

2 个答案:

答案 0 :(得分:1)

这样的东西?

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

但我认为如果你只是告诉我们你想要的东西,可能会有更简单的方法。

答案 1 :(得分:0)

试试这个:

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级。为什么不使用pandas DataFrame?