今日やったこと。
はてなブログからフィードを取得し、形態素解析してデータを作り、クラスターを作成するまでは完了した。
けれども、ネストが非常に深い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]...
といった方法も取れない。
いったいどうすれば、どれだけネストが深くなるか分からないデータから、辞書を作成出来るのか。はーーあ。(◞‸◟)