簡體   English   中英

通過點表示法進行Python字典操作

[英]Python dictionary manipulation from dot notation

我想做的是從一個字符串創建一個“字典路徑”。 我不認為這是正確的術語,但基本上,如果我有一個像這樣的字典:

'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'
}

像這樣嗎

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM