2014-12-13 184 views
-2

問題字典在python字典

我要動態地創建動態密鑰和值的

在這個字典詞典我需要把另一個字典,像這樣


{"Key Name of file" : "Value Name", 
"Specs" : [{"spec1" : "round", "spec2" : "large", "spec3": "pink"}]} 

我該如何做到這一點?

下面的代碼無法正常工作

save = {} 
save['Key name of file'] = 'Value Name' 
save['specs'] = [] 
save['specs'].append([{'spec1', 'spec2', 'spec3'}]) 
save['specs'][0] = 'round' 
save['specs']['spec2'] = 'large' 
+1

dictionay有一對關鍵和價值,你做錯了 – Hackaholic 2014-12-13 09:43:43

回答

1

你的第一個問題是在這裏:

save['specs'].append([{'spec1', 'spec2', 'spec3'}]) 

要追加含有3元組:[{'spec1', 'spec2', 'spec3'}],1元素的列表,而不是3元素集本身。所以,save['specs'][0]不是1元素列表,這不是你想要的。所以:

save['specs'].append({'spec1', 'spec2', 'spec3'}) 

你的第二個問題是在同一條直線:{a, b, c}是一組,而不是一個字典;一個字典必須有密鑰和值。所以,也許:

save['specs'].append({'spec1': None, 'spec2': None, 'spec3': None}) 

或者,也許只是離開鍵和值,因爲你要設置這些後來反正:

save['specs'].append({}) 

下一頁:

save['specs'][0] = 'round' 

這只是將您附加到save['specs']的任何內容替換爲字符串'round',這會打敗所有艱苦的工作y你剛剛完成。你可能想這一點:

save['specs'][0]['spec1'] = 'round' 

因此,而不是更換整個快譯通,你就只設置了'spec1'價值。


下一頁:

save['specs']['spec2'] = 'large' 

save['specs']是一個列表,而不是一個字典。您不能在列表中查找'spec2' th元素。您想在列表中第0個元素的'spec2'鍵:

save['specs'][0]['spec2'] = 'large' 

最後,你從不爲'spec3'值設置爲'pink'。顯然你必須這樣做。希望從前兩行你可以看到如何做到這一點。