1
私は方法があります。パイソン - 生成する親/子dictの構造
を@staticmethod
def get_blocks():
"""Public method that can be extended to add new blocks.
First item is the most parent. Last item is the most child.
Returns:
blocks (list)
"""
return ['header', 'body', 'footer']
ドキュメンテーション文字列が記述したように、この方法は、特定の順序でブロックの任意の種類を返すために、拡張することができます。
どのブロックが親子関係にあるかを示すマッピングを作成したいと思います(「最も近い」親子関係のみを気にする)。我々はget_blocks
方法でのように三つのブロックを持っている場合
def _get_blocks_mapping(blocks):
mp = {'parent': {}, 'child': {}}
if not blocks:
return mp
mp['parent'][blocks[0]] = None
mp['child'][blocks[-1]] = None
blocks_len = len(blocks)
if blocks_len > 1:
mp['parent'][blocks[-1]] = blocks[-2]
for i in range(1, len(blocks)-1):
mp['parent'][blocks[i]] = blocks[i-1]
mp['child'][blocks[i]] = blocks[i+1]
return mp
その結果、このです:
{
'parent': {
'header': None,
'body': 'header',
'footer': 'body',
},
'child': {
'header': 'body',
'body': 'footer',
'footer': None
}
}
まあそれは動作しますが、それは一種のハック私にはあります。だから、誰かがこのようなマッピングを作成するより良い方法を提案するかもしれません? (?または多分、私が使用するつもりは異なる構造を使用して、親/子のマッピングを作成するためのいくつかの使用方法がある?)
感謝。これはよりエレガントに見えます。 – Andrius