我需要从JSON API响应返回一堆SKU,但有时候它是“空的”:
{'products': [], 'request_speed': 0.0015690326690674}
此代码在有产品时有效,但在没有产品时会引发IndexError
:
data = json.loads(r.text)
print(data)
if not data['products'][0]:
print("something")
for key in data['products']:
print(key['info']['sku'])
else:
print("nothing")
这总是有“东西”,因为答案中始终有“产品”[]
:
data = json.loads(r.text)
print(data)
if not data['products']:
print("something")
for key in data['products']:
print(key['info']['sku'])
else:
print("nothing")
我知道我可以在第一个例子中添加一个try / except,但它似乎是实现某些目标的方式。
是否有更简便的方法来实现这一目标?我确实想过:
if 'info' in data['products']:
是pythonic方式,但这总是返回“没有”。
答案 0 :(得分:1)
您根本无需进行此项检查。
您可以简单地遍历空列表。如果什么都没有,它什么都不会做。:
data = json.loads(r.text)
for key in data['products']:
print(key['info']['sku'])
修改强>
如果您想停止迭代:
if not data['products']:
break
for key in data['products']:
print(key['info']['sku'])
答案 1 :(得分:0)
检查它的len,如下:
data = json.loads(r.text)
print(data)
if len(data['products']) > 0:
print("something")
for key in data['products']:
print(key['info']['sku'])
else:
print("nothing")
答案 2 :(得分:0)
if 'info' in r.text:
也有效。哪种选择是最佳做法,我会标记为正确?