请参阅以下代码
if 'COMPONENTS' in prod.keys() and len(prod['COMPONENTS'])>0 and len(prod['COMPONENTS'][0])>1 and len(prod['COMPONENTS'][0][1])>0 and len(prod['COMPONENTS'][0][1][0])>2:
names = prod['COMPONENTS'][0][1][0][2]
if type(names) == list and len(names)>0 and type(names[0]) == str:
#names is proper. Now fetch prices
if len(prod['COMPONENTS'][0])>3:
lnames = len(names)
prices = [prod['COMPONENTS'][0][3][i][2][1][0][1] for i in range(0, lanmes)]
了解我如何使用prod['COMPONENTS'][0][1][0][2]
和prod['COMPONENTS'][0][3][i][2][1][0][1]
。 prod
是一个非常深的嵌套列表。我想检查元素是否存在于这样的索引中。
我找不到任何办法。目前我在if语句中使用了很长的条件。见上文他们有多长。他们太可怕了。
那么有没有办法检查prod
是否可以满足['COMPONENTS'][0][3][i][2][1][0][1]
索引?
答案 0 :(得分:2)
最简单的方法就是做到并抓住错误:
try:
names = prod['COMPONENTS'][0][1][0][2]
except LookupError:
print "It failed"
# Do whatever you need to do in case of failure
LookupError将捕获列表中缺少的索引或字典中缺少键。
不用说,你已经找到了真正的问题:你使用的是笨拙且笨拙的数据结构。可以通过以不同方式存储数据来绕过问题。