Изучив его код, я обнаружил, что это не обычный диктат, но вы все равно можете его заставить диктовать.
Попробуйте:
print dict(tmp['logs'].items())
РЕДАКТИРОВАТЬ:
Что касается путаницы, когда вы устанавливаете преобразованный dict обратно в Record
объект, он запускает
super(Record, self).__setitem__(key, item)
Так что в соответствии со своим наследованием он запускает1014 * метод __setitem__
объекта, который выполняется:
super(RecordDict, self).__setitem__(key, item)
Итак, еще раз, посмотрите метод __setitem__
объекта RecordData
, это:
def __setitem__(self, key, item):
if isinstance(item, (list, tuple, dict)):
item = record_factory(item)
if hasattr(item, '_data'):
item = item._data
self._data[key] = item
Так что он использует record_factory
чтобы снова преобразовать разбор, который вы анализировали, в RecordDict
.Итак, вы видите эти результаты:)