NORA

雑食気味なひよっこプログラミング記録

今日やったこと。

はてなブログからフィードを取得し、形態素解析してデータを作り、クラスターを作成するまでは完了した。

 

けれども、ネストが非常に深いPythonの辞書を作成する方法が分からず詰まった。

 

class bicluster:

    def __init__(self, vec, left=None, right=None, distance=0.0, id=None):

        self.vec = vec

        self.left = left

        self.right = right

        self.distance = distance

        self.id = id

 

このbiclusterオブジェクトはleft, rightに別のbiclusterオブジェクトへの参照を持っている。

 

clusterA - clusterB - clusterE

               |                 -  clusterD

               |

               - clusterC  

 

こんな具合に一つのクラスタが2つのクラスタへの参照を持った構造になっており、延々と続いている。

そしてこんなオブジェクトからこんな辞書を作りたい。


{
  'name': 'clusterA',
  'children': [
    {
      'name': 'clusterB',
      'children': [
        {'name': 'clusterD'},
        {'name': 'clusterE'}
      ]
    },
    {
      'name': 'clusterC',
      'children': []
    }
  ]
}

ただ、Pythonの辞書オブジェクトは


cluster[key] = value
cluster.setdefault('key', value)

どちらもネストの深い位置のキーを指定することが出来ない。

また、どれだけネストが深くなるか分からないので


cluster[keyA][keyB]...

といった方法も取れない。

 

いったいどうすれば、どれだけネストが深くなるか分からないデータから、辞書を作成出来るのか。はーーあ。(◞‸◟)