2017-02-22 8 views
0

次のことを行う方法を理解していません。 私はdictを持っていますx = {}。私はまた、2つの文字列'a/b/c/d''e/f/g'を持っています。 それぞれの場合、dict xに値を追加したいと考えています(例:x[a][b][c] = 'd'x[e][f] = 'g')。次元を指定せずにX番目の次元に追加

フルパスを指定せずに 'd'または 'g'をどれくらい深く入れたいのかをPythonに教える方法はありますか?

私の現在のソリューションは非常に醜いように見え、私はこれを行うためのより良い方法を探しています。

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上で繰り返す完全なディレクトリ構造を作成する必要があります。 – 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

関連する問題