如何从JSON API中简单地捕获Python中的空列表?
我需要从一个JSON API响应返回一堆的SKU,但有时这是“空”:如何从JSON API中简单地捕获Python中的空列表?
{'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")
我知道我可以增加一个尝试/除了第一个例子,但它似乎是一个圆形的房子方式实现的东西。
有没有更简便的方法来实现这一点?我确实认为:
if 'info' in data['products']:
是pythonic的方式,但这总是返回“无”。
检查其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")
if 'info' in r.text:
也有效。哪个选项是最佳做法,我会标记为正确的?
你根本不需要做这个检查。
您可以简单地迭代空列表。如果有什么:
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'])
除了这段代码在while循环遍历页面1,2等,所以我需要检查这是否是最后一个记录,因为API没有返回任何产品。 –
如果不是数据['产品']:永远是真的,因为总是有产品,只是在没有任何产品时是空的清单。 –
尝试在您的口译员上执行此操作: 'if not []:print('this list is empty')' –
你的检查是错误的。 '如果不是数据['products']:'应该是'如果data ['products']:'。 你也可以检查:'如果有的话(data ['products']):' –
是的,如果你修复这个条件,第二次尝试应该可以工作。 – mkrieger1