2017-02-22 35 views
0

我不知道如何執行以下操作。 我有一個字典x = {}。我也有兩個字符串'a/b/c/d''e/f/g'。 在每種情況下,我想爲dict x添加值,例如,x[a][b][c] = 'd'x[e][f] = 'g'附加到第X維,但未指定尺寸

有沒有辦法告訴Python找出我想放多深'd'或'g'而不必指定完整路徑?

我目前的解決方案看起來非常難看,我正在尋找更好的方法來做到這一點。

x = {'a': {'b': {'c': {}}}, 'e': {'f': {}}} 
s = 'a/b/c/d'.split('/') 
if len(s) == 4: 
    x[s[0]][s[1]][s[2]] = s[3] 
elif len(s) == 3: #x[e][f] case 
    x[s[0]][s[1]] = s[2] 
+0

有可能會根據你的使用情況不同的方式。你需要做什麼? – kazemakase

+0

爲什麼不用一個字典{'abc':None,'ef':None}作爲關鍵字?.. –

+0

@kazemakase,我需要創建完整的目錄結構,遍歷web ui鏈接到這些目錄。 – fieryvova

回答

2

你可以使用一個for循環:

keys = s.split('/') 
d = x 
for key in keys[:-2]: 
    d = d [key] 
d[keys[-2]] = keys[-1] 
+0

謝謝,但它不完全是我想要的。 對於s = ['a','b','c','d'],結果是{'c':'d'},但我希望它是{'a':{'b': {'c':'d'}}} – fieryvova

+0

不知道我以前的回覆。它像一個魅力!謝謝! – fieryvova