次のような(タプルなどの)リストのタプルのネストされたリストがあります。
[(' person',
[(('surname', u'Doe', True),),
(('name', u'John', False),),
('contact',
[(('email', u'john@doe.me', True),),
(('phone', u'+0123456789', False),),
(('fax', u'+0987654321', False),)]),
('connection',
[(('company', u'ibcn', True),),
('contact',
[(('email', u'mail@ibcn.com', True),),
(('address', u'main street 0', False),),
(('city', u'pythonville', False),),
(('fax', u'+0987654321', False),)])])])]
リスト内の(double)タプルの数も、ネストの深さも知る方法はありません。
これを(辞書の)ネストされた辞書に変換して、次のようにブール値を削除したいと思います。
{'person': {'name': 'John', 'surname': 'Doe',
'contact': {'phone': '+0123456789', 'email': 'john@doe.me','fax': '+0987654321',
'connection': {'company name': 'ibcn', 'contact':{'phone': '+2345678901',
'email': 'mail@ibcn.com', 'address': 'main street 0'
'city': 'pythonville', 'fax': +0987654321'
}}}}}
これまでのところ、ネストされた構造を行ごとに出力できる再帰的な方法しかありません。
def tuple2dict(_tuple):
for item in _tuple:
if type(item) == StringType or type(item) == UnicodeType:
print item
elif type(item) == BooleanType:
pass
else:
tuple2dict(item)
しかし、私は正しい軌道に乗っているかどうかはわかりません...
編集:コンマが欠落していたため、元の構造を編集しました。