3 回答
TA贡献1875条经验 获得超3个赞
dict.get
这是一种解决方案:
Model = ItemAttributes.get('Model', {}).get('value', '')
如果ItemAttributes词典中不存在“模型”键,则返回一个空的词典,并在该词典上使用dict.get('value', '')。当然,如果“模型”键不存在,这将返回一个空字符串。
如果别的
另一种解决方案是添加一个额外的函数调用,并对该函数进行测试以检查密钥是否存在。在这里,我们使用三元语句。这实际上是您现在正在执行的操作,但是将逻辑包装在一个函数中以方便重复访问:
def get_value(d, key1, key2):
return d[key1][key2] if key1 in d else ''
Model = get_value(ItemAttributes, 'Model', 'value')
捕捉KeyError
一个更通用的解决方案是使用try/except和catch KeyError。如果缺少任何键,该函数将返回一个空字符串。否则,在给定键列表的情况下,reduce+getitem将循环浏览嵌套字典以访问适当的值。
from functools import reduce
from operator import getitem
def getFromDict(dataDict, mapList):
try:
return reduce(getitem, mapList, dataDict)
except KeyError:
return ''
Model = getFromDict(ItemAttributes, ['Model', 'Value'])
TA贡献1831条经验 获得超10个赞
使用get通常是最好的解决方案。另一个解决方案是捕获KeyError异常:
try:
Model=ItemAttributes['Model']['value']
except KeyError:
Model=''
模型将被设置为'',如果'Model'不是ItemAttributes或者'value'不ItemAttributes['Model']
添加回答
举报