【发布时间】:2016-05-01 10:22:13
【问题描述】:
我正在尝试解析 Prestashop API 的结果。我准备了那个代码。
prestashop = PrestaShopWebServiceDict( URL, API_KEY )
def get_order(order_id):
orders = order_id.split(",")
for order in orders:
order = prestashop.get('orders', order)['order']
for product in products['order_row']:
print product['product_reference']
当订单与少数产品关联时,它可以正常工作,结果如下:
[
{'product_id': '6', 'price': '39.000000', 'product_reference': '000001'},
{'product_id': '7', 'price': '38.000000', 'product_reference': '000002'},
{'product_id': '8', 'price': '37.000000', 'product_reference': '000003'},
]
result:
000001 000002 000003
在订单只包含一件商品的情况下,结果如下:
{'product_id': '6', 'price': '39.000000', 'product_reference': '000001'}
我无法循环:
for product in products['order_row']:
print product['product_reference']
因为:
Traceback (most recent call last):
File "prestapyt_dict.py", line 30, in <module>
print product['product_reference']
TypeError: string indices must be integers, not str
我不知道如何解决它。我唯一想到的是检查字典深度,但我不知道这是否是一个好的解决方案。
【问题讨论】:
-
产品['product_reference']出了什么问题?
-
如果响应 obj 的类型是 dict,为什么不将其添加到空列表中?迭代按预期工作
-
检查数据类型 -
isinstance(..., list)或isinstance(..., dict)做不同的事情。
标签: python loops for-loop dictionary