在Python中如何从字典中创建表格结构,其中一些值本身就是字典

时间:2014-01-30 02:23:10

标签: python dictionary tabular

我想轻松地将这样的字典(具有任意深度,或者说,最多7层嵌套)更改为表格数据结构:

{u'Adjustment': False,
 u'DocNumber': u'2',
 u'Id': u'1005',
 u'Line': [{u'Amount': 50.0,
            u'Description': u'Extra Pay for Cellist for 9/27 Session on "Song Name"',
            u'DetailType': u'JournalEntryLineDetail',
            u'Id': u'0',
            u'JournalEntryLineDetail': {u'AccountRef': {u'name': u'Recorded Music:WIP:Studio Musicians',
                                                        u'value': u'99'},
                                        u'Entity': {u'EntityRef': {u'name': u'Some Vendor',
                                                                   u'value': u'92'},
                                                    u'Type': u'Vendor'},
                                        u'PostingType': u'Debit'}},
           {u'Amount': 50.0,
            u'Description': u'Paid Vendor in Cash for amount over $150 check',
            u'DetailType': u'JournalEntryLineDetail',
            u'Id': u'1',
            u'JournalEntryLineDetail': {u'AccountRef': {u'name': u'3000 Capital Account (contr/withdr)',
                                                        u'value': u'7'},
                                        u'Entity': {u'EntityRef': {u'name': 'Some Name',
                                                                   u'value': u'92'},
                                                    u'Type': u'Vendor'},
                                        u'PostingType': u'Credit'}}],
 u'MetaData': {u'CreateTime': u'2007-09-27T00:00:00-07:00',
               u'LastUpdatedTime': u'2007-09-27T00:00:00-07:00'},
 u'PrivateNote': u'General Journal',
 u'SyncToken': u'0',
 u'TxnDate': u'2007-09-27',
 u'domain': u'QBO',
 u'sparse': False}

实现这一目标的最佳方法是什么。列表的嵌套项目的标题,其键是u'Line',我希望结束状态标题为Line [0] - Amount,以及第一行的JournalEntryLineDetail的实体的EntityRef的名称为Line [ 0] - JournalEntryLineDetail - 实体 - EntityRef - 名称。

我知道如果深度超过几个等级,这会使桌子非常宽,但我们假设这就是我想要的。

我希望有一个模块可以做到这一点。我检查了tablib,但还没弄明白如何做到这一点。

0 个答案:

没有答案