2017-09-05 19 views
0

私は[「ペット」、「毛皮」、「ポット」、「ティム」、「TIA」、「TEO」]単語のリストにこの辞書単語の辞書要素を変更するにはどうすればよいですか?

d = {"p ": {"e ": {"l ": {"t ": {}}, 
        "t ": {}}, 
      "o ": {"t ": {}}}, 
    "t ": {"i ": {"a ": {}, 
        "m ": {}}, 
      "e ": {"o ": {}}}} 

を変更したいと私は方法がわかりませんそれをするために。

+4

それはあなたが辞書から単語のあなたの出力リストを取得する方法は非常に不明です。あなたが適用したい論理を説明できますか? – asongtoruin

+0

"p" - > "e" - > "l" - > "t" - > {}は私たちに "ペースト"を与えます "p" - > "e" - > "t" - > {} "ペット"など – t387

答えて

2

再帰を使用してください!また、ジェネレーターも素敵です。

def paths(tree): 
    if not tree: 
     yield '' 
    for k, subtree in tree.items(): 
     for path in paths(subtree): 
      yield k + path 

print(list(paths(d))) 
+0

私は実際にどのように効果的か驚いています。私の脳を再帰の仕組みのまわりで包み込むことを試みている:( – Mangohero1

0

あなたはこれを試すことができます。

import itertools 
final_words = [[[key+i+e+''.join(l[e].keys()) if l[e] else key+i+e for e in l] for i, l in vals.items()] for key, vals in d.items()] 
final_data = list(itertools.chain.from_iterable([list(itertools.chain.from_iterable(i)) for i in final_words])) 
new_final_data = [''.join(i.split()) for i in final_data] 

出力:

['pet', 'pelt', 'pot', 'tia', 'tim', 'teo'] 
関連する問題