Python try/pass 在赋值期间?
Python try/pass during value assignment?
情况:
当给定的 HashKey 通过 url.
发送到视图时,Django 视图从服务器(Amazon 的 DynamoDB table)获取数据项
问题:
因为它是一个非关系数据库,DynamoDB table 中的一些项目缺少其他项目可能具有的键 --> 一些获取尝试引发了 KeyError,这意味着如果我正在分配一个字典在视图中,由于该 KeyError,它将停止整个过程。这意味着我必须为每次获取尝试(字典值赋值)try/except KeyError。
问题:
是否有 python 语法允许在分配值时在同一行上使用 try/except?类似于:
'times_a_day': try jsonFormatIndications[elem]['times_a_day']) except: pass
先谢谢了!
不,你不能在一行中完成。
您可以改为使用 .get()
和一个函数,在一行中优雅地处理所有情况。
get(key[, default])
Return the value for key if key is in the dictionary, else default. If default is not given, it defaults to None, so that this method never raises a KeyError
.
我们可以定义一个名为 get_nested_key_value()
的通用函数,它将使用 3 个参数 my_dict
、outer_key
和 inner_key
来获取所需的值。
my_dict
: 正在执行查找的字典
outer_key
: elem
在这种情况下
inner_key
:在 elem
字典中查找的键(在本例中为 times_a_day
)
我们首先检查字典中是否存在 elem
,如果存在,则使用 .get()
检查是否存在 times_a_day
。如果存在,我们将 return 该值。否则,None
被 returned。
def get_nested_key_value(my_dict, outer_key, inner_key):
if my_dict.get(outer_key) and my_dict[outer_key].get(inner_key): # check if both keys present
return my_dict[outer_key][inner_key] # return the required value
return None # return None if key not found
然后你可以只调用函数,它将 return 值,以防找到其他键 None
。
'times_a_day' : get_nested_key_value(jsonFormatIndications, elem, 'times_a_day')
情况: 当给定的 HashKey 通过 url.
发送到视图时,Django 视图从服务器(Amazon 的 DynamoDB table)获取数据项问题: 因为它是一个非关系数据库,DynamoDB table 中的一些项目缺少其他项目可能具有的键 --> 一些获取尝试引发了 KeyError,这意味着如果我正在分配一个字典在视图中,由于该 KeyError,它将停止整个过程。这意味着我必须为每次获取尝试(字典值赋值)try/except KeyError。
问题: 是否有 python 语法允许在分配值时在同一行上使用 try/except?类似于:
'times_a_day': try jsonFormatIndications[elem]['times_a_day']) except: pass
先谢谢了!
不,你不能在一行中完成。
您可以改为使用 .get()
和一个函数,在一行中优雅地处理所有情况。
get(key[, default])
Return the value for key if key is in the dictionary, else default. If default is not given, it defaults to None, so that this method never raises aKeyError
.
我们可以定义一个名为 get_nested_key_value()
的通用函数,它将使用 3 个参数 my_dict
、outer_key
和 inner_key
来获取所需的值。
my_dict
: 正在执行查找的字典
outer_key
: elem
在这种情况下
inner_key
:在 elem
字典中查找的键(在本例中为 times_a_day
)
我们首先检查字典中是否存在 elem
,如果存在,则使用 .get()
检查是否存在 times_a_day
。如果存在,我们将 return 该值。否则,None
被 returned。
def get_nested_key_value(my_dict, outer_key, inner_key):
if my_dict.get(outer_key) and my_dict[outer_key].get(inner_key): # check if both keys present
return my_dict[outer_key][inner_key] # return the required value
return None # return None if key not found
然后你可以只调用函数,它将 return 值,以防找到其他键 None
。
'times_a_day' : get_nested_key_value(jsonFormatIndications, elem, 'times_a_day')