EDIT:推奨回答とそれがまだ間に合いません。ツリー内のすべてのパスを上から下に検索します。
これにはStack Overflowに関する多くの類似の質問がありますが、Pythonではまったく同じものはありません。私はプログラミングの初心者ですので、簡単に行ってください。
このように私は、ネストされた辞書の木を持っている:
[{'word': 'The',
'next': [{'word': 'End',
'next': None},
{'word': 'quick',
'next': [{'word': 'brown',
'next': [{'word': 'fox',
'next': None}]}]},
{'word': 'best',
'next': [{'word': 'of',
'next': [{'word': 'times',
'next': None}]}]}]}]
私は上から下へのすべてのパスを平らにし、これで終わるしたい:
[[{'word': 'The'},
{'word': 'End'}],
[{'word': 'The'},
{'word': 'quick'},
{'word': 'brown'},
{'word': 'fox'}],
[{'word': 'The'},
{'word': 'best'},
{'word': 'of'},
{'word': 'times'}]]
私は美しいを作りました最初の構造を作成した再帰関数はほとんどありませんでしたが、私はそれをunrecursivizingするのに苦労しています。私が得たので、これは限りです。これを返す
def flatten_combinations(result_tree, current_combo = None, all_combos = None):
if current_combo is None:
current_combo = []
if all_combos is None:
all_combos = []
if result_tree is None:
all_combos.append(current_combo)
return
for word in result_tree:
current_combo.append({'word': word['word']})
flatten_combinations(word['next'], current_combo, all_combos)
return current_combo
...:明確にやや近いが、非常に適切ではない
[{'word': 'The'},
{'word': 'End'},
{'word': 'quick'},
{'word': 'brown'},
{'word': 'fox'},
{'word': 'best'},
{'word': 'of'},
{'word': 'times'}]
...。
私はその機能がおそらく恐らくPythonではないことを知っていますが、私はプログラミングを教えているので、このようなことから考え抜いてしまう可能性のある言語機能を利用しようとしていませんスクラッチ("彼は言った、Qの&のメンバーは、そのメンバーが彼が少しの考えを溶かすのを助けることを望むサイト)に投稿した。
So:どうしたのですか?
EDITは:これは近いまだですが、かなり右ではない
def flatten_combinations(result_tree, current_combo = None, all_combos = None):
if current_combo is None:
current_combo = []
if all_combos is None:
all_combos = []
if result_tree is None:
all_combos.append(current_combo)
return
for word in result_tree:
current_combo = current_combo[:]
current_combo.append({'word': word['word']})
flatten_combinations(word['next'], current_combo, all_combos)
return all_combos
:
[{'word': 'The'},
{'word': 'End'}],
[{'word': 'The'},
{'word': 'End'},
{'word': 'quick'},
{'word': 'brown'},
{'word': 'fox'}],
[{'word': 'The'},
{'word': 'End'},
{'word': 'quick'},
{'word': 'best'},
{'word': 'of'},
{'word': 'times'}]]
TIL "Elideのは" 言葉です。 – AndyPerfect