我正在建立一个访问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都存在于其他地方......
答案 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,但这是一个巨大的差异。顺便说一下,结帐字典已经存在,但我没有在问题中显示,因为它不相关,会导致混乱。
但是,感谢您的反应和其他解决方案,我将查看它们的资源,并可能切换到其他实现。