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_dictouter_keyinner_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')