Python数据模型

时间:2016-03-04 15:15:11

标签: python dictionary

我正在建立一个访问API的库。我已经在C#和Java中创建了一个,但现在我在Python中创建了一个。我使用字典作为数据,但我遇到了一个问题。

在C#和Java中我使用对象,所以如果数据模型依赖于另一个,我只需创建一个对象的新实例并将其添加到属性中。但是python有点不同。

我需要嵌套字典,这不是一个真正的问题,真正的问题是重复代码的数量。

checkout_order(使用结帐,项目和地址)如下所示(尚未完成):

checkout_order = {'id': None, 'status': None, 'dateTime': None,
              'checkout': {'id': None, 'amount': None, 'status': None, 'paymentUrl': None,
                           'setupUrl': None, 'returnUrl': None, 'billingAddress': {'name': None, 'line1': None,
                                                                                   'postCode': None, 'city': None,
                                                                                   'country': None}}, 'items': {},

我认为你会得到这个想法......嵌套在嵌套中,我不想在原始词典中加入需要进入的内容。 那么有没有更短的方法来做到这一点,减少杂乱和更多干?因为每个嵌套的dict都存在于其他地方......

3 个答案:

答案 0 :(得分:0)

您可以从列表中初始化字典

dict.fromkeys([1, 2, 3, 4])

答案 1 :(得分:0)

使用defaultdict。例如:

from collections import defaultdict
checkout_order = defaultdict(lambda: None)

答案 2 :(得分:0)

我找到了我要找的东西。

checkout = {'id': None, 'amount': None, 'status': None, 'paymentUrl': None,
        'setupUrl': None, 'returnUrl': None, 'billingAddress': {'name': None, 'line1': None,
                                                                'postCode': None, 'city': None,
                                                                'country': None}}
checkout_ = checkout
checkout_order = {'id': None, 'status': None, 'dateTime': None,
                  'checkout': [checkout_], 'items': {},
                  'billingAddress': {'name': None, 'line1': None,
                                     'postCode': None, 'city': None,
                                     'country': None}}

我需要在部分拼接更多的dicts,但这是一个巨大的差异。顺便说一下,结帐字典已经存在,但我没有在问题中显示,因为它不相关,会导致混乱。

但是,感谢您的反应和其他解决方案,我将查看它们的资源,并可能切换到其他实现。