2017-09-05 26 views
0

我想改變這個字典如何更改單詞中的詞典元素?

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

單詞的列表[「寵物」,「皮」,「鍋」,「添」,「蒂亞」,「TEO」],我不知道如何去做吧。

+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']